如何解决欧拉计划问题8
有人可以向我解释我做错了什么吗?结果应该没问题,但不正常。
在 1000 位数字中找出乘积最大的 13 个相邻数字。这个产品的价值是什么?
Console.WriteLine("This prouct calculates the prouct of thirteen adjacent digits in the 1000-digit number!");
string numbers = "73167176531330624919225119674426574742355349194934"+
"96983520312774506326239578318016984801869478851843"+
"85861560789112949495459501737958331952853208805511"+
"12540698747158523863050715693290963295227443043557"+
"66896648950445244523161731856403098711121722383113"+
"62229893423380308135336276614282806444486645238749"+
"30358907296290491560440772390713810515859307960866"+
"70172427121883998797908792274921901699720888093776"+
"65727333001053367881220235421809751254540594752243"+
"52584907711670556013604839586446706324415722155397"+
"53697817977846174064955149290862569321978468622482"+
"83972241375657056057490261407972968652414535100474"+
"82166370484403199890008895243450658541227588666881"+
"16427171479924442928230863465674813919123162824586"+
"17866458359124566529476545682848912883142607690042"+
"24219022671055626321111109370544217506941658960408"+
"07198403850962455444362981230987879927244284909188"+
"84580156166097919133875499200524063689912560717606"+
"05886116467109405077541002256983155200055935729725"+
"71636269561882670428252483600823257530420752963450";
char n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13;
int c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13;
long tempProd=0;
for (int i= 0;i<=numbers.Length-13; i++)
{
n1 = numbers[i];
c1 = (int)Char.GetNumericValue(n1);
n2 = numbers[i + 1];
c2 = (int)Char.GetNumericValue(n2);
n3 = numbers[i + 2];
c3 = (int)Char.GetNumericValue(n3);
n4 = numbers[i + 3];
c4 = (int)Char.GetNumericValue(n4);
n5 = numbers[i + 4];
c5 = (int)Char.GetNumericValue(n5);
n6 = numbers[i + 5];
c6 = (int)Char.GetNumericValue(n6);
n7 = numbers[i + 6];
c7 = (int)Char.GetNumericValue(n7);
n8 = numbers[i + 7];
c8 = (int)Char.GetNumericValue(n8);
n9 = numbers[i + 8];
c9 = (int)Char.GetNumericValue(n9);
n10 = numbers[i + 9];
c10 = (int)Char.GetNumericValue(n10);
n11 = numbers[i + 10];
c11 = (int)Char.GetNumericValue(n11);
n12 = numbers[i + 11];
c12 = (int)Char.GetNumericValue(n12);
n13 = numbers[i + 12];
c13 = (int)Char.GetNumericValue(n13);
long prod = c1 * c2 * c3 * c4 * c5 * c6 * c7 * c8 * c9 * c10 * c11 * c12 * c13;
if (prod > tempProd)
{
tempProd = prod;
}
}
Console.WriteLine("The result we are looking for is: " + tempProd);
解决方法
您正在使用带有 long 的 int 值!把 c1,c2 改成长的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。