fork download
  1. using System;
  2. using System.Numerics;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9.  
  10. namespace Crypt2
  11. {
  12. class binary
  13. {
  14. static void Main(string[] args)
  15. {
  16. int i =0;
  17. BigInteger k, t, a, b, g = 1, u, v, A, B, C, D, d, x, y;
  18. string aa = "565431459971080509861444482373814245967";
  19. string bb = "561603748547195264441961708017610977917";
  20. a = BigInteger.Parse(aa);
  21. b = BigInteger.Parse(bb);
  22. k = a;
  23. t = b;
  24. Stopwatch st = new Stopwatch();
  25. st.Start();
  26. while (((a % 2) == 0) & ((b % 2) == 0))
  27. {
  28. a = a >> 1;
  29. b = b >> 1;
  30. g = g << 1;
  31. }
  32. u = a;
  33. v = b;
  34. A = 1;
  35. B = 0;
  36. C = 0;
  37. D = 1;
  38. while (u != 0)
  39. {
  40. while ((u % 2) == 0)
  41. {
  42. u = u >> 1;
  43. if (((A % 2) == 0) & ((B % 2) == 0))
  44. {
  45. A = A >> 1;
  46. B = B >> 1;
  47. }
  48. else
  49. {
  50. A = (A + b) >> 1;
  51. B = (B - a) >> 1;
  52. }
  53. }
  54. while ((v % 2) == 0)
  55. {
  56. v = v >> 1;
  57. if (((C % 2) == 0) & ((D % 2) == 0))
  58. {
  59. C = C >> 1;
  60. D = D >> 1;
  61. }
  62. else
  63. {
  64. C = (C + b) >> 1;
  65. D = (D - a) >> 1;
  66. }
  67. }
  68. if (u >= v)
  69. {
  70. u -= v;
  71. A -= C;
  72. B -= D;
  73. }
  74. else
  75. {
  76. v -= u;
  77. C -= A;
  78. D -= B;
  79. }
  80. Console.WriteLine("{0} {1} {2} {3} ", i, g*v, C, D);
  81. i++;
  82. }
  83. d = g * v;
  84. x = C;
  85. y = D;
  86. Console.WriteLine("Binary: {0} = {1} * {2} + {3} * {4}", d, k, x, t, y);
  87. st.Stop();
  88. Console.WriteLine("Time: {0}", st.Elapsed.TotalSeconds);
  89. Console.ReadLine();
  90. }
  91. }
  92. }
  93.  
Success #stdin #stdout 0.02s 131520KB
stdin
Standard input is empty
stdout
0  561603748547195264441961708017610977917  0  1  
1  559689892835252641732220320839509343892  -280801874273597632220980854008805488959  282715729985540254930722241186907122985  
2  138008617496870537723313693031775701948  70200468568399408055245213502201372239  -70678932496385063732680560296726780745  
3  32588298662275011721087036079842291462  -122850819994698964096679123628852401420  123688131868673861532190980519271866306  
4  14380293619194883150802130861819511706  -342227284270947114269320415823231689669  344559795919877185696817731446543056137  
5  5276291097654818865659678252808121828  -171113642135473557134660207911615844835  172279897959938592848408865723271528069  
6  1319072774413704716414919563202030457  378424400876528059047806229035304272229  -381003620488325734183981145349542802458  
7  1281898840818147341832015337270805234  -106877471189584645662233679540949159494  107605913829945619491454095217379932796  
8  603775486813516296333103442704177394  -538740607660905027541156748346728011470  542412491233244163421162288175612701652  
9  264713809811200773583647495420863474  -754672175896565218480618282749617437458  759815779934893435386016384654729086080  
10  95182971310043012208919521779206514  -862637960014395313950349049951062150452  868517424285718071368443432894287278294  
11  10417552059464131521555534958378034  -916620852073310361685214433551784506949  922868246461130389359656957014066374401  
12  5208776029732065760777767479189017  -177508551763057548621626362767086764516  178718393245024939749106237320126064217  
13  5208776029732065760777767479189017  -177508551763057548621626362767086764516  178718393245024939749106237320126064217  
14  5208776029732065760777767479189017  -177508551763057548621626362767086764516  178718393245024939749106237320126064217  
15  5119713356302951478595285782076254  -744493611405994032030530486271326223631  749567841606130999902406401529735616043  
16  2470794004722361457115161193925364  -658429991072335867203188512631097081972  662917639178631305173781123787570236864  
17  528635827751476082096308601368578  -731592557411020450209701251662013729608  736578858155763886446745445156502111042  
18  175255240446623758865672603571526  -932781338348446708513754749335246323919  939138877438988003376672886787860607347  
19  87627620223311879432836301785763  -185588794900625722035896520658817673001  186853708733953746757614202207023180690  
20  87448238572586579089130627369888  -560462400992168629937477455188005303474  564282333356376477552200739196009395238  
21  2553375804668030252829657689434  63914989572047974771966782760496123351  -64350613686693418544330831839862566699  
22  1097306251608714782709154428842  -62114237031921288294616689140134079839  62537587793535766591698879882147808215  
23  369271475079057047648902798546  -125128850333905919827908425090449181434  125981688533650359159713735743152995672  
24  5254086814228180118776983398  -437438031258495867815535147074412221190  440419468889247910374443404860562712384  
25  2627043407114090059388491699  -218719015629247933907767573537206110595  220209734444623955187221702430281356192  
26  2627043407114090059388491699  -218719015629247933907767573537206110595  220209734444623955187221702430281356192  
27  2627043407114090059388491699  -218719015629247933907767573537206110595  220209734444623955187221702430281356192  
28  1835535223102997390706642908  -848336207760167393600958211892957015303  854118195865017440308527374922642503977  
29  458883805775749347676660727  209118759470354599931231728039968979612  -210544046012056022318951518049700058481  
30  448489293955894868895248600  -225224627960684500267800768920607438985  226759686947764905789705411056993785035  
31  45666649924632379830493948  -111494123084127622456281525564645487272  112254031346366222668967304005184162916  
32  1022150661303616176211360  -462216918202071005813102878351737790415  465367240796412483775898755107989884245  
33  31942208165738005506605  459408884142881285441245726191367456667  -462540068075711290077596945905781086152  
34  31942208165738005506605  459408884142881285441245726191367456667  -462540068075711290077596945905781086152  
35  31942208165738005506605  459408884142881285441245726191367456667  -462540068075711290077596945905781086152  
36  31942208165738005506605  459408884142881285441245726191367456667  -462540068075711290077596945905781086152  
37  31942208165738005506605  459408884142881285441245726191367456667  -462540068075711290077596945905781086152  
38  31942208165738005506605  459408884142881285441245726191367456667  -462540068075711290077596945905781086152  
39  31942208165738005506605  459408884142881285441245726191367456667  -462540068075711290077596945905781086152  
40  22656983281932382853268  688771820383946274118423358907428227812  -693466268688741219355814634405245672808  
41  5664245820483095713317  172192955095986568529605839726857056953  -173366567172185304838953658601311418202  
42  4759001054652463978312  -8219946343348174389679146171218974981  8275970867051141562475745810401703567  
43  594875131831557997289  69172975275480886256535320230799000367  -69644436138003671037371092070426567800  
44  517282723331789562860  -99037943402281394019642523190423002004  99712954330074650269004606608348632184  
45  51728272333178956286  -192970404528332628781088474218827752872  194285629050596983873626850330862358030  
46  25864136166589478143  -96485202264166314390544237109413876436  97142814525298491936813425165431179015  
47  25864136166589478143  -96485202264166314390544237109413876436  97142814525298491936813425165431179015  
Binary: 25864136166589478143 = 565431459971080509861444482373814245967 * -96485202264166314390544237109413876436 + 561603748547195264441961708017610977917 * 97142814525298491936813425165431179015
Time: 0.0138824