这是问题的关联。 https://projecteuler.net/problem=8
下面是我的代码。
#include <stdio.h>
int main() {
long i,sum;
long temp = 0;
long arr[1000] = {
// Increasingly large number is ommitted//
// I just add ',' between each numbers//};
for(i=0; i<988; i++){
sum = arr[i]*arr[i+1]*arr[i+2]*arr[i+3]*arr[i+4]*arr[i+5]*arr[i+6]
*arr[i+7]*arr[i+8]*arr[i+9]*arr[i+10]*arr[i+11]*arr[i+12];
if(temp<sum){
temp = sum;
}
}
printf("%ld",temp);
return 0;
}
所以我得到了2091059712这似乎是一个合理的答案。
答案 0 :(得分:1)
这里真正的问题是,您没有考虑产品的大小。整数最大为10位(2,147,483,647)。所以这个或类似的事情可能会发生:
sum = 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9;
这给出:2,541,865,828,329,它会溢出整数,导致未定义的行为。
使用更大的整数类型或采用不同的方法。
答案 1 :(得分:0)
这是一个强力解决方案,可以解决这个问题。
潜在的改进: