C 48号工程
这是问题陈述 系列,1^1+2^2+3^3+…+10^10=10405071317 查找序列的最后十位数字,1^1+2^2+3^3+…+1000^1000 问题很简单。 我编写的代码可以正确地找到所有单个数字(即(1^1,2^2,…997^997等,它们都是正确的,因为我使用WolframAlpha进行了检查):) 当我尝试添加所有这些数字时,就会出现故障。我的程序总是输出0。 我已经读了很多遍了,但不知怎么的,还是找不到错误 PS由于这里的数字太大,所以我将单个数字存储在一个数组中。 代码C 48号工程,c,C,这是问题陈述 系列,1^1+2^2+3^3+…+10^10=10405071317 查找序列的最后十位数字,1^1+2^2+3^3+…+1000^1000 问题很简单。 我编写的代码可以正确地找到所有单个数字(即(1^1,2^2,…997^997等,它们都是正确的,因为我使用WolframAlpha进行了检查):) 当我尝试添加所有这些数字时,就会出现故障。我的程序总是输出0。 我已经读了很多遍了,但不知怎么的,还是找不到错误 PS由于这里的数字太大,所以我将单个数字存储在一个数组中。 代码 #
#包括
int n[1001][3001]={};
整数和[3001]={};
整数上升到整数(整数q)
{
int i,j;
//整数位数;
整数进位=0;
int carry1=0;
n[q][0]=q;
对于(i=0;i您是正确的,您的sumof()
函数是错误的
int sumof()
{
int i,j,carry=0,s = 0;
for(i=0;i<3001;i++) //iterate each column (as in digit)
{
s = carry;
for(j=0;j<1000;j++) //sum all the columns (ie add all units places, then tenths place)
{
s+=n[j][i];
}
carry = s / 10; //store carry
sum[i] = s % 10; //store last digit as the sum
}
return(0);
}
int sumof()
{
int i,j,进位=0,s=0;
对于(i=0;我知道这对你的代码没有帮助,但我会把它放在那里……使用powmod
这会变成几行代码。再说一次,我没有破坏你的代码,这显示了我付出了巨大的努力:)天哪,我真不敢相信我没有想到这一点!谢谢:)顺便说一句,你能帮我一下吗,因为设计算法和编写代码花了一个小时。更新1:我的Sumof函数完全错了。正在处理它。更新2:我修改了Sumof()函数。基本上,每次我递增时,存储在sum[j]中的数字被一个新的求和替换。因此它没有显示循环求和,所以这里是chang3。对于(j=0;j1),您不需要一次取2,您可以一次求多个列,请参见我的答案。
int sumof()
{
int i,j,carry=0,s = 0;
for(i=0;i<3001;i++) //iterate each column (as in digit)
{
s = carry;
for(j=0;j<1000;j++) //sum all the columns (ie add all units places, then tenths place)
{
s+=n[j][i];
}
carry = s / 10; //store carry
sum[i] = s % 10; //store last digit as the sum
}
return(0);
}