首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Project Euler 29

Project Euler 29
EN

Stack Overflow用户
提问于 2012-01-12 17:48:30
回答 2查看 833关注 0票数 2

这里有个问题

考虑a^b对于2≤a≤5和2≤b≤5的所有整数组合:

代码语言:javascript
复制
2^2=4, 2^3=8, 2^4=16, 2^5=32
3^2=9, 3^3=27, 3^4=81, 3^5=243
4^2=16, 4^3=64, 4^4=256, 4^5=1024
5^2=25, 5^3=125, 5^4=625, 5^5=3125

如果将它们按数字顺序放置,去掉任何重复,我们就会得到以下15个不同项的序列:

4、8、9、16、25、27、32、64、81、125、243、256、625、1024、3125

对于2≤a≤100和2≤b≤100,a^b生成的序列中有多少个不同的项?

下面是我的代码

代码语言:javascript
复制
int b[10000][300]={};
int a[10000][300]={};
int main(void)
{
    int i,j,k=0,z;
    int ticker=2;
    int carry=0,oi=0;
    int carry1=0,count=0;
    for(i=0;i<10000;i++)
    {
        a[i][0]=1;
    }

    for(k=0;k<100;k++)
    {
        for(i=0;i<100;i++)
        {
            for(j=0;j<300;j++)
            {   
                carry1=(ticker*a[k][j]+carry)/10;
                a[k][j]=(ticker*a[k][j]+carry)%10;
                carry=carry1;
            }
            for(z=0;z<300;z++)
            {
                b[oi][z]=a[k][z]; // Storing the number, everytime its multiplied
            }
            oi++;
            carry1=0;
            carry=0;
        }
        ticker++;
    }
    int l=0,flag=0,blue=0;
    for(z=0;z<9900;z++)
    {

        for(i=0;i<9900;i++)
        {
            for(j=0;j<205;j++)
            {
                if(b[z][j]!=b[i][j])
                {
                    blue++;
                    break;
                }
            }
        }
        if(blue==9899)
        {
            l++;
        }
        blue=0;
    }
    printf("\n%d\n",l-99);
    return(0);
}

这是我的解释。由于C不能处理大数字,我决定通过设计乘法算法将a^b得到的每个数字存储在一个数组中。即我将该数字的数字存储在一个数组中。然后,我检查数组中的哪些数字是相同的,并消除它们。这很简单。但不知何故,我没有得到正确的答案,它是9183,我已经看了我的代码几次,但没有找到故障帮助我。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-12 18:33:30

如果我没理解错您的代码,那么您是在计算最后一个循环块中的唯一数字。这意味着你根本不计算像16 = 2^4 = 4^2 = 16^1这样的东西。

你可以用普通的int来解决这个问题,如果你不计算重复的话(只是一个小提示,不要破坏这个问题)。

票数 4
EN

Stack Overflow用户

发布于 2012-01-12 21:10:11

我认为您的问题出在循环的范围内。例如,您在一次乘法迭代后存储数字,这意味着(n^1)。我建议你减少变量。代码的可读性会更好,出错的可能性也会降低。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8832963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档