예제 #1
0
파일: Task.cs 프로젝트: svejdo1/Euler
        public string Run()
        {
            var set = new HashSet <byte>
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9
            };
            var f0 = new DecimalInteger(1);
            var f1 = new DecimalInteger(1);

            for (var i = 3; i < int.MaxValue; i++)
            {
                var xchg = f0.Clone();
                f0.Add(f1);
                f1 = xchg;
                if (f0.Count >= 18)
                {
                    var start = f0.Value.Take(9);
                    var end   = f0.Value.Skip(f0.Count - 9).Take(9);
                    if (set.SetEquals(start) && set.SetEquals(end))
                    {
                        return(Convert.ToString(i));
                    }
                }
            }
            return(string.Empty);
        }
예제 #2
0
        public void Add(DecimalInteger integer)
        {
            DecimalInteger big, small;

            if (m_Value.Count >= integer.m_Value.Count)
            {
                big   = this;
                small = integer;
            }
            else
            {
                big   = integer;
                small = this;
            }
            int carry = 0;

            for (var i = 0; i < big.m_Value.Count; i++)
            {
                int value = big.m_Value[i] + carry;
                if (i < small.m_Value.Count)
                {
                    value += small.m_Value[i];
                }
                carry = value / 10;

                if (i < m_Value.Count)
                {
                    m_Value[i] = (byte)(value - carry * 10);
                }
                else
                {
                    m_Value.Add((byte)(value - carry * 10));
                }
            }
            if (carry > 0)
            {
                m_Value.Add((byte)carry);
            }
        }
예제 #3
0
        public void Add(DecimalInteger integer)
        {
            DecimalInteger big, small;
            if (m_Value.Count >= integer.m_Value.Count)
            {
                big = this;
                small = integer;
            }
            else
            {
                big = integer;
                small = this;
            }
            int carry = 0;
            for (var i = 0; i < big.m_Value.Count; i++)
            {
                int value = big.m_Value[i] + carry;
                if (i < small.m_Value.Count)
                {
                    value += small.m_Value[i];
                }
                carry = value / 10;

                if (i < m_Value.Count)
                {
                    m_Value[i] = (byte)(value - carry * 10);
                }
                else
                {
                    m_Value.Add((byte)(value - carry * 10));
                }
            }
            if (carry > 0)
            {
                m_Value.Add((byte)carry);
            }
        }
예제 #4
0
파일: Task.cs 프로젝트: svejdo1/Euler
        public string Run()
        {
            var set = new HashSet<byte>
            {
                1,2,3,4,5,6,7,8,9
            };
            var f0 = new DecimalInteger(1);
            var f1 = new DecimalInteger(1);
            for(var i = 3; i < int.MaxValue; i++)
            {
                var xchg = f0.Clone();
                f0.Add(f1);
                f1 = xchg;
                if (f0.Count >= 18)
                {
                    var start = f0.Value.Take(9);
                    var end = f0.Value.Skip(f0.Count - 9).Take(9);
                    if (set.SetEquals(start) && set.SetEquals(end))
                        return Convert.ToString(i);
                }

            }
            return string.Empty;
        }
예제 #5
0
 public DecimalInteger(DecimalInteger source)
 {
     byte[] buffer = new byte[source.m_Value.Count];
     source.m_Value.CopyTo(buffer, 0);
     m_Value = new Collection<byte>(buffer);
 }
예제 #6
0
 public DecimalInteger(DecimalInteger source)
 {
     byte[] buffer = new byte[source.m_Value.Count];
     source.m_Value.CopyTo(buffer, 0);
     m_Value = new Collection <byte>(buffer);
 }