Esempio n. 1
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;
            }
        }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
    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");
    }
Esempio n. 4
0
        public void TestCreate()
        {
            const string value = "18446744073709551616";

            var bignum = Bignum.Parse(value);

            Assert.That(bignum, Is.Not.Null);
        }
Esempio n. 5
0
        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"));
        }
Esempio n. 6
0
            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;
                }
                }
            }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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"));
        }
Esempio n. 9
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;
        }
Esempio n. 10
0
    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);
    }
Esempio n. 11
0
    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);
    }
Esempio n. 12
0
 public void TestOnlyWhitespaceString()
 {
     Assert.That(Bignum.Parse("\t \r\n").ToString(8), Is.EqualTo("0"));
 }
Esempio n. 13
0
 public void TestInvalidString()
 {
     Assert.That(Bignum.Parse("not a number").ToString(8), Is.EqualTo("0"));
 }
Esempio n. 14
0
 public void TestToStringWithRadixNoDigits()
 {
     Assert.That(Bignum.Parse("0").ToString(8), Is.EqualTo("0"));
 }
Esempio n. 15
0
 public void TestPrefixWhitespace()
 {
     Assert.That(Bignum.Parse("  1  ").ToString(), Is.EqualTo("1"));
     Assert.That(Bignum.Parse("  -1  ").ToString(), Is.EqualTo("-1"));
 }
Esempio n. 16
0
 public void TestSign()
 {
     Assert.That(Bignum.Parse("1").Sign, Is.EqualTo(1));
     Assert.That(Bignum.Parse("-1").Sign, Is.EqualTo(-1));
 }