From c9e9b68a8974026d705055e152e039b0225f2f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cezary=20Bary=C5=82ka?= Date: Sun, 8 Jul 2018 22:21:24 +0000 Subject: [PATCH 1/6] Zadanie 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Program można uruchomić za pomocą polecenia: java Main 6 --- zad1/Main.class | Bin 0 -> 992 bytes zad1/Main.java | 18 ++++++++++++++++++ zad1/NWDCalculator.class | Bin 0 -> 417 bytes zad1/NWDCalculator.java | 9 +++++++++ zad1/Ring.class | Bin 0 -> 3049 bytes 5 files changed, 27 insertions(+) create mode 100644 zad1/Main.class create mode 100644 zad1/Main.java create mode 100644 zad1/NWDCalculator.class create mode 100644 zad1/NWDCalculator.java create mode 100644 zad1/Ring.class diff --git a/zad1/Main.class b/zad1/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..5d30d9ad69117c3cd9050be2f0e77fe8607de8f1 GIT binary patch literal 992 zcmZuwT~8BH5IwhrZo4ek+`!E^rc6vDZD2<1 zjEQdCl4I7yZOj?SnlLdh#~lL;2JR}v@{a2S%L>u-%!WeOs<&+`^c5Y~e%Y#T+5Q{7 zRU-+|eI(wx-=`wjB75Tg`>+&5EW! z+4i;qrHoy z)|@D@(1(5lix%$TzQVw|?=`<1e@ivIZGHST<)#cgu<#I%=nIvf)@ES|Ibq0Kc#LHO zD;A#MDaD8gaXhoIiZudKP@(^%`Bz&zb|p9il|MHFyUu}oEjotVvv9oZI$H}kEL+#v zSTf`|3o956397NiaQgfaM?}C0X~Au@PDn>PNu)jPkkuHj{V6E8RKy2?TWF6VTp&@q zYWoWDhW49w7<6uVSzfvzY<=$>cUz{jW(V4-ah*fyng0c261{wSsFQW1-9(uFwWEhC0|hIVNzGajB3$lKO*~G(AZ(f@}W(I|I>` literal 0 HcmV?d00001 diff --git a/zad1/Main.java b/zad1/Main.java new file mode 100644 index 0000000..1f4c722 --- /dev/null +++ b/zad1/Main.java @@ -0,0 +1,18 @@ +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + int n; + if(args.length == 0) { + System.out.println("Proszę podać n "); + Scanner scan = new Scanner(System.in); + n = scan.nextInt(); + } + else{ + n = Integer.parseInt(args[0]); + } + Ring ring = new Ring(n); + System.out.println(ring.findRingDetails()); + } +} diff --git a/zad1/NWDCalculator.class b/zad1/NWDCalculator.class new file mode 100644 index 0000000000000000000000000000000000000000..a84d7f99209c35db6d14b8f24bd8588fa2d3280e GIT binary patch literal 417 zcmY*Uy-osQ5S+bVIgcMv(LiMf7SPyfY%nGyhy@1g?~YRs&pUD+K8(*mW2Le10emRq zd_Y4syR$pHJDdIe`~CrNhGP#F4m_ARbkT5eBycX`G%hX$X1g;HSp94o397?5jYf-? zAj&zv}7H{Z(Hj;UZB*mY)mUhd7;*6xi*-pfeDNqH7EU z<#D0H=NmQO$av#yk%!TBygIa{)t#v~<->;K!$+CBTWvv25A+h1KK5>dSrisH;d>U} z1q|>$97dN_k0?a@^b_*2YVR=WHs~cre?0&XyR1t3A{o6rrl>)zwBBJim#t=N{sm)6 k#)MX>5Or?R9GX^ZtT))JveGj(W`aHDCPW{uGc~aP5BbGJ5C8xG literal 0 HcmV?d00001 diff --git a/zad1/NWDCalculator.java b/zad1/NWDCalculator.java new file mode 100644 index 0000000..7a9070c --- /dev/null +++ b/zad1/NWDCalculator.java @@ -0,0 +1,9 @@ +public class NWDCalculator { + public static int findNWD(int a, int b) { + if (b == 0) + return a; + else { + return findNWD(b, a % b); + } + } +} diff --git a/zad1/Ring.class b/zad1/Ring.class new file mode 100644 index 0000000000000000000000000000000000000000..9ebb65c094ccc44dde8c4d00f002e17719e98360 GIT binary patch literal 3049 zcma)7ZF3V<6n=KI$+qdzmOu)n777+kU!Z_kmGa*35=>j5wUk!WZL)2bZg=BmQ!KtK zTHoItXZ++a&hW(#I-_lc8GeA{2Y-#@I3xPp-IS!HR3@|M-h1x3&pGEg=idBw=jLqy z`|))Y&FHPhLr6v`P6%;Qh*LtGR*{NAMQ;_(i1Fzt(&(!~zgP@Z;j9?X)!;k^V}u(K zvx`EE#voxt#j{bw(Hq4jJQv0Dc%cS5#$%8%5=9n zHq4>d$r=*s(xz?n7iPu{cSs+%sEMVWjBX90%R?L%z zr<)eHHYVEAm-Sh_%hK)1u0hWY3}db_Yq)unP$w*7#;`rw%3};jyK1;j(wsH(j!WHo z+q80yM}v}GU4U5dOsi|q@aQ*YW{sJ9&Ek`WcYYN&N}^3Ts^j+P3SS$k>92IRAu*OJ zCQ;^6HusW2Q$oW^V&-zo6z(1J?C?(VoF831QC2{ zm87;>`pkG%Z(Vh}bze}&QARc`VROm0JkeGLUItT1QR^NF(Ltx+W{i`jsC~64>26U* z4J|M=Y{fPWUD%^xuMqq2n1&wk*rt1HeY{{=S;J*OV;U}FT7{)y2JAk$vqfkeZe0?p zgo>Po7eU+lVfggM#f`RN{B?05K4&K z5z%uw!_G?Bl_;xbv8yW^y_h_U9C+{pJm$Lk96P(pbAp3xp;Cvfye2E$1flh;L1!G`BP`#XWxdr15=~=Q8FR$w|;iJOwhwO>|3&~#H z$`mZ!bC{VbUOVc9Z<3i(@sWm)@wtYhIHci-5C?Hc!j4kJrakLS8(nGt7PGtc2|Yuw zIhJRpv{Lb zSp&{aQZI9iwl6|zZ~6uDPh81(n6efj%4#TxQr4iAtA@ZDJMjotJm;hG!NQ|R6fqZQ z6XxC!F+*tzrLVnn5#fGLBL|dQP%kc`DptLKXvY$2IK(uH&a(Ng1+4RxjY?5lON#~6 z{Ycy(x(44zEoB{}sON7zql@`b?hpJIqYPsJZD?n7QJg^sXELpm=)^8&*nq>>O`Sq5 z-|u1$C%7ZgS5v6{XUIx+3H9wa=>fkYCR1#XPzojDn>P5awcuFMwJiP()`Z-+7UY&y zA^G1@g#43HS24hQ83@W)bgooa#8BG%B~d!=dg-JQ5FIM^~c~kL>PNap77-y7BKH*FuzwogziW?}Z({pRJVJ$Z-o<+)mzh zkk1yJrEZuBi~bPIcW}L*pGv;dc$_oQMi Date: Sun, 8 Jul 2018 22:22:29 +0000 Subject: [PATCH 2/6] =?UTF-8?q?Dodano=20brakuj=C4=85cy=20plik?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zad1/Ring.java | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 zad1/Ring.java diff --git a/zad1/Ring.java b/zad1/Ring.java new file mode 100644 index 0000000..794563b --- /dev/null +++ b/zad1/Ring.java @@ -0,0 +1,43 @@ +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.IntStream; + +public class Ring { + private int n; + + Ring(int n) { + this.n = n; + } + + public String findRingDetails() { + int[] reversibleElements = getReversibleElements(); + int[] zeroDivisors = getZeroDivisors(); + Set nilpotentElements = getNilpotentElements(zeroDivisors); + int[] idempotentElements = getIdempotentElements(); + return "[" + Arrays.toString(reversibleElements) + ", " + Arrays.toString(zeroDivisors) + ", " + nilpotentElements + ", " + Arrays.toString(idempotentElements) + "]"; + } + + private int[] getReversibleElements() { + return IntStream.rangeClosed(0, n - 1).filter(k -> NWDCalculator.findNWD(k, n) == 1).toArray(); + } + + private int[] getZeroDivisors() { + return IntStream.rangeClosed(0, n - 1).filter(k -> NWDCalculator.findNWD(k, n) > 1).toArray(); + } + + private Set getNilpotentElements(int[] zeroDivisors) { + Set nilpotentElements = new HashSet<>(); + for (int i = 0; i < n; i++) { + for (int i1 : zeroDivisors) { + if (Math.pow(i1, i) % n == 0) + nilpotentElements.add(i1); + } + } + return nilpotentElements; + } + + private int[] getIdempotentElements() { + return IntStream.rangeClosed(0, n - 1).filter(k -> k * k % n == k).toArray(); + } +} -- 2.20.1 From aea8d85191565ea5a209c11044dae933e5c8b0ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cezary=20Bary=C5=82ka?= Date: Sun, 8 Jul 2018 22:24:39 +0000 Subject: [PATCH 3/6] Zadanie 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Program można uruchomić za pomocą polecenia java Main "6" "[1,2,3,0,1]" "[2,4,0,0,2]" --- zad2/Main.class | Bin 0 -> 2853 bytes zad2/Main.java | 34 ++++++++++++ zad2/PolynomialOperations.class | Bin 0 -> 3314 bytes zad2/PolynomialOperations.java | 88 ++++++++++++++++++++++++++++++++ 4 files changed, 122 insertions(+) create mode 100644 zad2/Main.class create mode 100644 zad2/Main.java create mode 100644 zad2/PolynomialOperations.class create mode 100644 zad2/PolynomialOperations.java diff --git a/zad2/Main.class b/zad2/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..26f5cc38b13f30c9221b2f81c63a43cb9546fa59 GIT binary patch literal 2853 zcma)8X;%|h7=DH-)^_^r2r+0}A$veNe%^0G`Bg&-Az?~TW)+gKWY{uN68v3;WjNa;c*0EwBzSx5 zgf5|`&#?4?Y;sgj4{M_)Il(@AOfwH?X+xazOs_L(WN4$WUo)&uYA3l%s1L{cj%w3d ztEpKNtwT=QuqHZ%btPd;8yUl}vdx)Z2^I0e zVK>buv!-LD1l&ahPu=OXHpA$w;|U3>opn-KCx?haLyk5!)vu-8aAdT|XqRz}7a14x zu$|Yg50|2C5}rL2ln@xQv*|It*ASj7MJ`%I_$nH)Mn+mi29AW@!L*$@dGlf@WhbrIFC0~yoI+V)b6lthgs25 z{kk)0Co(mDyi<#JYkYXG78g{!j}K&gsNy4hT#HY5>#G$(T*M_6m+`5L&s2PlFNj!V zg9hi3?HxU;k1>-)tU@V^Su+_&PcnEGTS8r~a)#YH$Tk$E*R>>Db%|?sAzOl+5<({3 z)|D$cTX^w2oS5b46Cyx&&NRC3>_JWITrU*923L+}N*sHX;1_h!t=Nx^?x@JGlb4 z1hexNmUAT{ekSA!L(E>cXw4CCWES<_#4MHtm(QYM4lAxR4*Y>t6}XQ31a*G}m(>z} zqqAJ~s|glZjpb~bDEIj;XvQ{jL`olXrMKe>_W+%JhoA608t^R7^|Yf=W|WCbxYQ&J G9Q_ZDd)pfT literal 0 HcmV?d00001 diff --git a/zad2/Main.java b/zad2/Main.java new file mode 100644 index 0000000..96e4cb4 --- /dev/null +++ b/zad2/Main.java @@ -0,0 +1,34 @@ +import java.util.Arrays; + + +public class Main { + + public static void main(String[] args) { + if (args.length == 0) { + System.out.println("Proszę podać parametry np. java Main \"6\" \"[1,2,3,0,1]\" \"[2,4,0,0,2]\""); + return; + } + int modulo = Integer.parseInt(args[0]); + int[] polyF = stringToArray(args[1]); + int[] polyG = stringToArray(args[2]); + String multiple = Arrays.toString(PolynomialOperations.multiple(polyF, polyG, modulo)); + int[] divisionArray = PolynomialOperations.divide(polyF, polyG, modulo); + String division; + if (divisionArray.length == 0) + division = "[0]"; + else + division = Arrays.toString(divisionArray); + String nwd = Arrays.toString(PolynomialOperations.NWD(polyF, polyG, modulo)); + if (nwd.equals("null")) + nwd = "DivisionError"; + + + String outputString = "[" + multiple + ", " + division + ", " + nwd + "]"; + System.out.println(outputString); + } + + private static int[] stringToArray(String str) { + return Arrays.stream(str.substring(1, str.length() - 1).split(",")) + .map(String::trim).mapToInt(Integer::parseInt).toArray(); + } +} diff --git a/zad2/PolynomialOperations.class b/zad2/PolynomialOperations.class new file mode 100644 index 0000000000000000000000000000000000000000..85ee99535514c5d1f3b134f4e8de1a6cdb17d704 GIT binary patch literal 3314 zcma)8&r=)s75}VO+6A#HpjgBpWRL?6NFd_Y#x*#uZDPkt0L6jexTGnIw4lW+t*Rfy zr0q;+;#+4rJ+_BrS}wWd;GRO$jCyXTxBdw|^wQ4s>`Cf=-tGp8xK8Ua-yd(^_r1^O zz4v`z{rTUYwE>sXF+aiW1|Omqv*xkQ9Orx zGJIc#O&Q*i;RiCjE5i?UZ0Rr+Xjkm2-Mp$motoZI5MFXimV*9eyK1erD%)0l-Q0F4 zi7&fF)7dcVw(J98xLLLv3Wk>7aGisyTd_^2P_yc0({`(kMFl;TmeaIra=v$JGryV7 zPjBWGD0}>q+2-Glf{-WN<)%tNb*sTs3Sw(bvv_~Sta;9KoK+Crv8$z9X0hqksW_FV zJuyQX$~GBP+!Dt|nICn!3!K#yL>gs#hbH^H*(wQK1xAh2ijR<6%{#&vc=EN@cC$`T zB;g_Vfs<^kShvikwQ9ZRTM0Mp_sLIdRs^Vm0kc-4S+~@3+;!IzX(fB#mau9&0d|Ez zLsc0{93o_8Js|YeyRVQ+QNgfdR<=v##Mf<2oToN9Tav1327vPGhTWL*sks_PH*UF8ff9bz%9IDUFjj;nBJCM_kN2P&B#})R(;7a8x4zo|I+O@u;-W1ZRXpt8WaA(MW0eP zye`R!gX;%1t6Tm5|LD8?=CeVXJRpJPCDU=%?54G-<0lFxJ7sgi^GQAm&U~{T(oD=L zHgUjU@8%8U_&j%WoE6TI%%@O($3+OIIclCz#W2@$fC?Bvl5;Ock)ni$6_t7#W%n}e zYO#2Ws>U<;-$#OM1n+PW&TkqsDiEu8Ph~&y!g@+O4<0pT680Pp_ z@5n3_pQ9rG=SFJ<@5?`CAJMq#0m|?l5?E2_IJTZ<~>YMFGN2DOj4%e9Hk@BzC=vNi^>=1 zRUTvPF(O|e#MKZr*$@1H-~;N5<)nHwHF}6sBgs^GwDucBQlC6j$@QOc^%H*fDGd=A zFi4`einUvV#h zCX*jB#g8)W&!a2EmT4zThZvkmWm3tlT*1dS(~0&Of&#&W2}UFPJ~~TyiBB?8sbh$- zE{Kz?B|n;zjJ81R1o1JAMWuNLC~s3GM27>JBZQNmNnCypErd=z zM!oN8^wXTgXUNw-b~)gsjc<@N;=t<91McZerhNq6=gle;*12pdS9+SapOQ(kKSx(D z($zUKnLg&*+r>A1>^zNm!eY-PU#S_NuYu5)=Q0Zxvex%=w@rUy@juCoY@^Ybh_u@3v z!6&>BI!i^Wh5tAS;$9*PB8Xoyf^w15nf6EM$+mf&l}Fk3uQ8a(G7$0A?CZ13A3yn5 zrbGO!7xGo6x8OC$K~gx4H5TbQVZB8t8^^^XSN#S_Nb#iEYkXp9_8Om9x~tbjphlJW zKvW*^plU9&=0iLhNsiR6bZ)Kxid^g}lZa=Bnhe8DB2Z|CKL(yQQ+~=!`h*$j(p_c< j{8es4%-I9ZQ5xLG`*@FMR=AgTu}Yl+vs(yOZ=vuXV3BfA literal 0 HcmV?d00001 diff --git a/zad2/PolynomialOperations.java b/zad2/PolynomialOperations.java new file mode 100644 index 0000000..5dd3ea2 --- /dev/null +++ b/zad2/PolynomialOperations.java @@ -0,0 +1,88 @@ +import java.util.Arrays; + +public class PolynomialOperations { + + public static int[] multiple(int[] f, int[] g, int n) { + int[] result = new int[f.length + g.length - 1]; + for (int i = 0; i < f.length; i++) + for (int j = 0; j < g.length; j++) + result[i + j] += f[i] * g[j]; + + for (int i = 0; i < result.length; i++) + result[i] = result[i] % n; + return result; + } + + private static int findFactor(int a, int b, int mod) { + for (int i = 0; i < mod; i++) + if (a == (b * i) % mod) + return i; + return Integer.MIN_VALUE; + } + + private static int[] shr(int[] p, int shift) { + if (shift <= 0) + return p; + int[] shiftedPoly = new int[p.length]; + for (int i = 0; i < p.length - shift; i++) + shiftedPoly[i] = p[i + shift]; + return shiftedPoly; + } + + private static void polyMultiply(int[] p, int n) { + Arrays.stream(p).forEach(value -> value = value * n); + } + + private static int[] polySubtract(int[] p, int[] s) { + int result[] = Arrays.copyOf(p, p.length); + for (int i = 0; i < p.length; ++i) { + result[i] = p[i] - s[i]; + } + return result; + } + + private static int[] createNewPoly(int[] p, int size) { + int[] tmpTab = new int[size]; + for (int j = 0; j < p.length; j++) { + tmpTab[tmpTab.length - 1 - j] = p[p.length - 1 - j]; + } + return tmpTab; + } + + private static void applyModuloToTab(int p[], int mod) { + Arrays.stream(p).forEach(value -> value = value % mod); + } + + public static int[] divide(int[] n, int[] d, int mod) { + if (n.length < d.length) { + throw new IllegalArgumentException("Numerator and denominator vectors must have the same size"); + } + int nd = n.length - 1; + int dd = d.length - 1; + int index = 0; + int[] tmpTab = createNewPoly(d, n.length); + while (nd >= dd) { + int factor = findFactor(n[nd], d[dd], mod); + tmpTab = shr(tmpTab, index); + polyMultiply(tmpTab, factor); + + applyModuloToTab(tmpTab, mod); + tmpTab = polySubtract(n, tmpTab); + nd--; + index++; + } + return Arrays.copyOf(n, index - 1); + } + + public static int[] NWD(int[] a, int[] b, int mod) { + if (a.length <= 0 || b.length <= 0) + return null; + + while (b.length != 0) { + int[] c = divide(a, b, mod); + a = b; + b = c; + } + return a; + } +} \ No newline at end of file -- 2.20.1 From 1f5fb7af39700cbb7013351679d1ff2a9757ae38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cezary=20Bary=C5=82ka?= Date: Sun, 8 Jul 2018 22:26:17 +0000 Subject: [PATCH 4/6] Dodano readme --- readme | 1 + 1 file changed, 1 insertion(+) create mode 100644 readme diff --git a/readme b/readme new file mode 100644 index 0000000..c42667f --- /dev/null +++ b/readme @@ -0,0 +1 @@ +Program można uruchomić za pomocą polecenia: java Main "6" "[1,2,3,0,1]" "[2,4,0,0,2]" \ No newline at end of file -- 2.20.1 From 300097480b9adc678ad985ba55d93c2e35c703df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cezary=20Bary=C5=82ka?= Date: Sun, 8 Jul 2018 22:27:20 +0000 Subject: [PATCH 5/6] Zaktualizuj 'readme' --- readme | 3 +++ 1 file changed, 3 insertions(+) diff --git a/readme b/readme index c42667f..027212d 100644 --- a/readme +++ b/readme @@ -1 +1,4 @@ +ZAD1 +Program można uruchomić za pomocą polecenia: java Main 6 +ZAD2 Program można uruchomić za pomocą polecenia: java Main "6" "[1,2,3,0,1]" "[2,4,0,0,2]" \ No newline at end of file -- 2.20.1 From 2bc8588fcfe6bf0b63cf7199cbc0af628b132ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cezary=20Bary=C5=82ka?= Date: Mon, 9 Jul 2018 07:28:31 +0000 Subject: [PATCH 6/6] Poprawiono nwd --- zad2/Main.class | Bin 2853 -> 2884 bytes zad2/Main.java | 5 +++-- zad2/PolynomialOperations.class | Bin 3314 -> 3213 bytes zad2/PolynomialOperations.java | 8 ++++++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/zad2/Main.class b/zad2/Main.class index 26f5cc38b13f30c9221b2f81c63a43cb9546fa59..af74cdb6b00dcc80f4f626d838794219e480360e 100644 GIT binary patch delta 399 zcmX|*+bcv-6vlsN&YatJoH7_Dw}xEGxZlQjP;NRfR-WM3n=wX?Ztk#RZVIDZpRx|!rwqsf2O%KXP*N&dr# z>dqrN4)EZA+3~)2R7fSv2Pz`Q%at@mKaGkQ1?+?wYpW{Y{-71HLdDN`msla?uQ{Xo z45j|P(|9mMh!IMeq>Nd@EKY9 z&_O4fOrFw3Hvt+rp+`s;#U8yf8>F8Meez}uOW^#U;W`uY5yO&DhXEm*xR^F$cwb^+ cS`2CyiQh9M6jPySv=OeIoe#r zO9r2O*iV4~+w`-;0Jnr`F-TPA?;%){T@%D`^!kW1Dbdd*QzTHNugNqs*cjoMS;}?lUl5`ptevb(1H}IRY52fDM7$GuHuZH zan(hAD;@1jyJ4JhQKt)I$BAp5ap7O!+O125ir=|OfsSS-_nv#_yzhMHJLlZLQ@2yo zzy0&50^m4qx@g2%2j`5>cy=*>!6q6bbr{8%94|IOVZ=oOfS%`7iu2bb697v@(TyzSvC-cd;O7mMp_>#H*> z7v|Tm7w6XEHr`F(J#I4|X7Rp*IS=!==3xN=Z?Ah~9C+x$a~^!LvN-19ge)&0=iw!^ zDKw82mp)xCh9kyo`~xg1n1=_CXtp1QzZhR66IgO^!^1LGJ-miK4`giY;h1HI53TO81SOK6M3tMhE>O zEZQgz^3K2^-nPMhjCu#1Y6~&7iOeRfEktOw(38pu1NwbVe={6#I?3dQlO7Z%KBGqH zC-DuQ(|Dei{L(l~OQNQ6L`RiaE)0Q=GX!lGL}&MhQy^wEdT96wX8j(_E_By2>B3Qs zSx3%2yo+f5^)Q%#EeUK=P*+NCM^M4^f|Euo6xc-`mrVSm%m4I zD*0tBJ@kZ6Y!9D~oew+kqE^-+AJMbQ$3x^XV!L$MfEx5#EYB>ziKTT7MLC<sELgwU%U>RN2CU$}a~PR}xJ4Wtizlhyp*sj$pULssiLGKtTj3{f`1t zBE^Q|JXB#-H)#Rbik!x8U-uxD`mub?e?U34=4Qgo*-%V>@UMD zI4L`6l~LDg({Rf0Qa11F{ghosL$7_SWNhEE)W-I&e$q1M%5WYqjGa z5?7~T7QH2!(wMWg#%#a@0i_Jh7-3KurB)0vw2W7Vp`;A9Znk|eV%wzZu)b1a{gOFzP5s)qr)59fBL&x_^dMD zRj#9a7cTNi8Rx4o!A_eb@yqP0DbB+*`{0Vs`M4%)Xr&B#m^F(uIF;4xbDYXdNoSwi zGnNgoT$S9?L$nDy;Zo|pY9BDOYI|Afwv|)6Jym_R@;Y*LpezkY%H+{c=@eo3SpF9# zyzND=?!J5-PhrRlwFiSjzRqKWwf=~^OSB@^u)>$|JkJt&h(5!(z<<@cgyDYyqwU38 delta 1834 zcmZ`(O;cNC6n<{*R}wCg1dI(;O(AXy@s^Iab(r^8zm>Yb*Q6Cm_QF>-ZNAbw2G)?2;2O{6iiKj{+`gJBuIG}4 z77ZyE-sO=tu#OEK83XTO)4&#@v}PrAXUtu5c+UZmp%Z ziyJvQolVe^H;cJ^(99--$y7GCwUM>%yQ#Hl+6%$0okB6VZtkXn#r0IMU~W-t+({Ym zB4^+Xq6YdgU|>jSr}3hJQ6WYUGjI-F658%RXe)|+o*Q2nBT~z&kZc=C>q$oZ3C}j(!c~J%fHDn>BDkR`BnKyLT`Cb=_-fS!E3E- ziuf7ip4?F$<87Fy#8VAFg7h5~8`>!~%P7N7T|A%zI?&0}f#c|+pm7RP>1d~Qf80EdafS4WKp891!wD&Sh)@v=_D?$g_Y~JBUEZI5+kPg|1ct2 zCUGpeM&czPjWDyFxijHvr1~|Qe}rSz<9vjs$Kk4yybz&?D{@?ogsT-8qgt0&d4MzF zu4u%oM2}a{9M}DtS1ncW+^9xPub{=R@efznuT|h4)$Yj$_f+ZO!B1hYsw6AW_n1z$ zHfNlZ2LjXy#f|f%{bkZ|fknQ;wv2I-F7lsoZt4UsV+z-}xGR{(4Q|j)%)q2ow0;34 zI~{u%BEVooL%lX!8HTJaPv&r7eOR(m$V`=BBC&1(erU%iRi>S=7}u;JY=`VV;PmNi zu;?*=JVeP3mUhS?K8IYgb~Y5Qeg%7^`Xy9pFH-#i?r?-ucoLB-L$ePL{tP#ucU!C{ z*u^={#XR9Jkdj5t))MQw&RUl1Gt$oB<3u55B*ay$Aq#O8Ysf+vEb&2YAXUgt$>Va0 z&s(j>tk!1jhT7S&eg4_+R_w^As1`-cLL#OZQDPW=D*qd1{n;=}EUdAFs= b.length) + c = divide(a, b, mod); + else + c = divide(b, a, mod); a = b; b = c; } -- 2.20.1