c - 欧拉计划48号

标签 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。
我已经读了很多遍,以某种方式无法找到错误。

附注:由于此处的数字太大,因此我将各个数字存储在数组中。

#include<stdio.h>
int n[1001][3001]={};
int sum[3001]={};
int raisedto(int q)
{
    int i,j;    
    //int digit;
    int carry=0;
    int carry1=0;
    n[q][0]=q;
    for(i=0;i<q-1;i++)
    {

    for(j=0;j<3001;j++)
    {
        carry=(q*n[q][j]+carry1)/10;
        n[q][j]=((q*n[q][j])+carry1)%10;
        carry1=carry;
    }
    carry1=0;
    carry=0;
    }
return(0);      
}
int sumof()
{
    int i,j,carry=0,carry1=0;
    for(i=0;i<1001;i=i+2)
    {
        for(j=0;j<3001;j++)
        {
            carry=(n[i][j]+n[i+1][j]+carry1)/10;
            sum[j]=(n[i][j]+n[i+1][j]+carry1)%10;
            carry1=carry;
        }   
        carry1=0;
        carry=0;

    }   
    return(0);
}       
int main(void)
{
    int j,i;
    for(i=0;i<1001;i++)
    {
    printf("%d",i);
    raisedto(i);
    }
    printf("\n");
    sumof();

    for(j=0;j<3001;j++)
    {
        printf("%d",sum[j]);
    }   
    printf("done");
    return(0);
}

最佳答案

您是正确的,您的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);
}       

这基本上就是您所需要的。

请尝试使用我建议的方法来解决,它将为您解决Euler的高级问题。

答案就出来了。 :)

关于c - 欧拉计划48号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8572418/

相关文章:

c: 调试模糊内存泄漏的策略?

c - 不使用除法运算符将数字除以 5

c++ - 二进制文件和跨平台兼容性

c - 如何知道新创建的文件的完整路径?

c - 需要帮助解决仅在 Linux 中发生的段错误

C错误: expression must have arithmetic or pointer type

c - 为什么先决条件的顺序在 makefile 中很重要?

c - 包括另一个内部 .c 文件中的函数?

c++ - 在 arm-linux-androideabi-gcc 上使用 c/c++ 宏对 char '#' 进行字符串化

c - 当我从进程内部检查进程的 CPU 使用率时,top 命令返回 0% CPU 使用率