using System;
using System.Numerics;
using System.Diagnostics;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Crypt2
{
class binary
{
static void Main(string[] args)
{
int i =0;
BigInteger k, t, a, b, g = 1, u, v, A, B, C, D, d, x, y;
string aa = "565431459971080509861444482373814245967";
string bb = "561603748547195264441961708017610977917";
a = BigInteger.Parse(aa);
b = BigInteger.Parse(bb);
k = a;
t = b;
Stopwatch st = new Stopwatch();
st.Start();
while (((a % 2) == 0) & ((b % 2) == 0))
{
a = a >> 1;
b = b >> 1;
g = g << 1;
}
u = a;
v = b;
A = 1;
B = 0;
C = 0;
D = 1;
while (u != 0)
{
while ((u % 2) == 0)
{
u = u >> 1;
if (((A % 2) == 0) & ((B % 2) == 0))
{
A = A >> 1;
B = B >> 1;
}
else
{
A = (A + b) >> 1;
B = (B - a) >> 1;
}
}
while ((v % 2) == 0)
{
v = v >> 1;
if (((C % 2) == 0) & ((D % 2) == 0))
{
C = C >> 1;
D = D >> 1;
}
else
{
C = (C + b) >> 1;
D = (D - a) >> 1;
}
}
if (u >= v)
{
u -= v;
A -= C;
B -= D;
}
else
{
v -= u;
C -= A;
D -= B;
}
Console.WriteLine("{0} {1} {2} {3} ", i, g*v, C, D);
i++;
}
d = g * v;
x = C;
y = D;
Console.WriteLine("Binary: {0} = {1} * {2} + {3} * {4}", d, k, x, t, y);
st.Stop();
Console.WriteLine("Time: {0}", st.Elapsed.TotalSeconds);
Console.ReadLine();
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTnVtZXJpY3M7CnVzaW5nIFN5c3RlbS5EaWFnbm9zdGljczsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0Owp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwoKbmFtZXNwYWNlIENyeXB0Mgp7CiAgICBjbGFzcyBiaW5hcnkKICAgIHsKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBpbnQgaSA9MDsKICAgICAgICAgICAgQmlnSW50ZWdlciBrLCB0LCBhLCBiLCBnID0gMSwgdSwgdiwgQSwgQiwgQywgRCwgZCwgeCwgeTsKICAgICAgICAgICAgc3RyaW5nIGFhID0gIjU2NTQzMTQ1OTk3MTA4MDUwOTg2MTQ0NDQ4MjM3MzgxNDI0NTk2NyI7CiAgICAgICAgICAgIHN0cmluZyBiYiA9ICI1NjE2MDM3NDg1NDcxOTUyNjQ0NDE5NjE3MDgwMTc2MTA5Nzc5MTciOwogICAgICAgICAgICBhID0gQmlnSW50ZWdlci5QYXJzZShhYSk7CiAgICAgICAgICAgIGIgPSBCaWdJbnRlZ2VyLlBhcnNlKGJiKTsKICAgICAgICAgICAgayA9IGE7CiAgICAgICAgICAgIHQgPSBiOwogICAgICAgICAgICBTdG9wd2F0Y2ggc3QgPSBuZXcgU3RvcHdhdGNoKCk7CiAgICAgICAgICAgIHN0LlN0YXJ0KCk7CiAgICAgICAgICAgIHdoaWxlICgoKGEgJSAyKSA9PSAwKSAmICgoYiAlIDIpID09IDApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhID0gYSA+PiAxOwogICAgICAgICAgICAgICAgYiA9IGIgPj4gMTsKICAgICAgICAgICAgICAgIGcgPSBnIDw8IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdSA9IGE7CiAgICAgICAgICAgIHYgPSBiOwogICAgICAgICAgICBBID0gMTsKICAgICAgICAgICAgQiA9IDA7CiAgICAgICAgICAgIEMgPSAwOwogICAgICAgICAgICBEID0gMTsKICAgICAgICAgICAgd2hpbGUgKHUgIT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgd2hpbGUgKCh1ICUgMikgPT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB1ID0gdSA+PiAxOwogICAgICAgICAgICAgICAgICAgIGlmICgoKEEgJSAyKSA9PSAwKSAmICgoQiAlIDIpID09IDApKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQSA9IEEgPj4gMTsKICAgICAgICAgICAgICAgICAgICAgICAgQiA9IEIgPj4gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQSA9IChBICsgYikgPj4gMTsKICAgICAgICAgICAgICAgICAgICAgICAgQiA9IChCIC0gYSkgPj4gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSAoKHYgJSAyKSA9PSAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHYgPSB2ID4+IDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCgoQyAlIDIpID09IDApICYgKChEICUgMikgPT0gMCkpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDID0gQyA+PiAxOwogICAgICAgICAgICAgICAgICAgICAgICBEID0gRCA+PiAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDID0gKEMgKyBiKSA+PiAxOwogICAgICAgICAgICAgICAgICAgICAgICBEID0gKEQgLSBhKSA+PiAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh1ID49IHYpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdSAtPSB2OwogICAgICAgICAgICAgICAgICAgIEEgLT0gQzsKICAgICAgICAgICAgICAgICAgICBCIC09IEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdiAtPSB1OwogICAgICAgICAgICAgICAgICAgIEMgLT0gQTsKICAgICAgICAgICAgICAgICAgICBEIC09IEI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiezB9ICB7MX0gIHsyfSAgezN9ICAiLCBpLCBnKnYsIEMsIEQpOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGQgPSBnICogdjsKICAgICAgICAgICAgeCA9IEM7CiAgICAgICAgICAgIHkgPSBEOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiQmluYXJ5OiB7MH0gPSB7MX0gKiB7Mn0gKyB7M30gKiB7NH0iLCBkLCBrLCB4LCB0LCB5KTsKICAgICAgICAgICAgc3QuU3RvcCgpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiVGltZTogezB9Iiwgc3QuRWxhcHNlZC5Ub3RhbFNlY29uZHMpOwogICAgICAgICAgICBDb25zb2xlLlJlYWRMaW5lKCk7CiAgICAgICAgfQogICAgfQp9Cg==