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); }
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); } }
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; }
public DecimalInteger(DecimalInteger source) { byte[] buffer = new byte[source.m_Value.Count]; source.m_Value.CopyTo(buffer, 0); m_Value = new Collection<byte>(buffer); }
public DecimalInteger(DecimalInteger source) { byte[] buffer = new byte[source.m_Value.Count]; source.m_Value.CopyTo(buffer, 0); m_Value = new Collection <byte>(buffer); }