public void Add(Bignum y) { int carry = 0; if (n < y.n) { n = y.n; } for (int i = 0; i < n; ++i) { carry += a[i]; if (i < y.n) { carry += y.a[i]; } else if (carry == 0) { break; } a[i] = carry % RADIX; carry /= RADIX; } if (carry != 0) { a[n++] = carry; } }
void Run() { Scanner input = new Scanner(Console.In); long A = input.NextInt(); long B = input.NextInt(); int N = input.NextInt(); Bignum a = new Bignum(0); Bignum b = new Bignum(0); Bignum one = new Bignum(1); int last = 0; for (int i = 0; i < N; i++) { while (A % 2 == 0 && B % 2 == 0) { A /= 2; B /= 2; } if (A > B || (A == B && last == 0)) { B *= 2; last = 0; a.Add(a); a.Add(one); } else { A *= 2; last = 1; b.Add(b); b.Add(one); } } a.Add(b); Console.WriteLine(a); }
void Run() { Scanner input = new Scanner(Console.In); int N = input.NextInt(); Bignum[] v = new Bignum[N]; for (int i = 0; i < N; i++) { v[i] = new Bignum(input.Next()); } Array.Sort(v); for (int i = 0; i <= N - 3; i++) { Bignum t = new Bignum(v[i]); t.Add(v[i + 1]); if (t.CompareTo(v[i + 2]) > 0) { Console.WriteLine("{0} {1} {2}", v[i], v[i + 1], v[i + 2]); return; } } Console.WriteLine("0 0 0"); }
public void TestCreate() { const string value = "18446744073709551616"; var bignum = Bignum.Parse(value); Assert.That(bignum, Is.Not.Null); }
public void TestHexParse() { const string value = "693eA77aD11a5bBb1b44F185443956red balloons"; var bignum = Bignum.Parse(value, 16); Assert.That(bignum.ToString(), Is.EqualTo("546461948654684354874631879846541654")); Assert.That(bignum.ToString(16), Is.EqualTo("693ea77ad11a5bbb1b44f185443956")); }
private void _read() { _code = ((RubyMarshal.Codes)m_io.ReadU1()); switch (Code) { case RubyMarshal.Codes.PackedInt: { _body = new PackedInt(m_io, this, m_root); break; } case RubyMarshal.Codes.Bignum: { _body = new Bignum(m_io, this, m_root); break; } case RubyMarshal.Codes.RubyArray: { _body = new RubyArray(m_io, this, m_root); break; } case RubyMarshal.Codes.RubySymbolLink: { _body = new PackedInt(m_io, this, m_root); break; } case RubyMarshal.Codes.RubyStruct: { _body = new RubyStruct(m_io, this, m_root); break; } case RubyMarshal.Codes.RubyString: { _body = new RubyString(m_io, this, m_root); break; } case RubyMarshal.Codes.InstanceVar: { _body = new InstanceVar(m_io, this, m_root); break; } case RubyMarshal.Codes.RubyHash: { _body = new RubyHash(m_io, this, m_root); break; } case RubyMarshal.Codes.RubySymbol: { _body = new RubySymbol(m_io, this, m_root); break; } case RubyMarshal.Codes.RubyObjectLink: { _body = new PackedInt(m_io, this, m_root); break; } } }
public void TestClass() { const string value = "18446744073709551616"; var bignum = Bignum.Parse(value); Assert.That(bignum.Class, Is.EqualTo(Class.BIGNUM)); Assert.That(bignum.EffectiveClass, Is.EqualTo(Class.BIGNUM)); Assert.Throws <TypeError>(() => { var singletonClass = bignum.SingletonClass; }); Assert.IsFalse(bignum.HasSingletonClass); }
public void TestToString() { const string value = "18446744073709551616"; var bignum = Bignum.Parse(value); Assert.That(bignum.ToString(), Is.EqualTo(value)); Assert.That(bignum.ToString(10), Is.EqualTo(bignum.ToString())); Assert.Throws <ArgumentError>(() => { bignum.ToString(1); }); Assert.Throws <ArgumentError>(() => { bignum.ToString(37); }); Assert.That(Bignum.Parse("0").ToString(10), Is.EqualTo("0")); }
public void Add(Bignum y) { int carry = 0; if (n < y.n) n = y.n; for (int i = 0; i < n; ++i) { carry += a[i]; if (i < y.n) { carry += y.a[i]; } else if (carry == 0) { break; } a[i] = carry % RADIX; carry /= RADIX; } if (carry != 0) a[n++] = carry; }
public static int Main(string[] argv) { var sum = new RationalBignum(0); var n = new Bignum(0); using (var s = new FileStream(argv[0])) { using (var r = new BinaryReader(s)) { while (true) { try { var flt = r.ReadSingle(); rat = new RationalBignum(flt); sum += rat; } catch (EndOfStreamException) { break; } } } } Console.WriteLine("The mean is: {0}", sum / n); }
public void TestOnlyWhitespaceString() { Assert.That(Bignum.Parse("\t \r\n").ToString(8), Is.EqualTo("0")); }
public void TestInvalidString() { Assert.That(Bignum.Parse("not a number").ToString(8), Is.EqualTo("0")); }
public void TestToStringWithRadixNoDigits() { Assert.That(Bignum.Parse("0").ToString(8), Is.EqualTo("0")); }
public void TestPrefixWhitespace() { Assert.That(Bignum.Parse(" 1 ").ToString(), Is.EqualTo("1")); Assert.That(Bignum.Parse(" -1 ").ToString(), Is.EqualTo("-1")); }
public void TestSign() { Assert.That(Bignum.Parse("1").Sign, Is.EqualTo(1)); Assert.That(Bignum.Parse("-1").Sign, Is.EqualTo(-1)); }