這裏的問題項目歐拉29
考慮一個^ B的所有整數組合2≤一個≤5和2≤b≤5:
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
有多少個不同的術語ar e在由a^b產生的序列中2≤a≤100且2≤b≤100?
這裏是我的代碼
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無法處理大數字,因此我決定通過設計一個用於乘法的算法來存儲由^ b得到的每個數字。即我將該數字的數字存儲在數組中。 然後我檢查數組中的哪些數字是相同的並消除它們。 很簡單。但不知何故,我沒有得到正確的答案,這是9183,並已看過我的代碼幾次,但無法找到故障 幫助我的傢伙。謝謝
您是否嘗試過使用調試器? – 2012-01-12 10:24:38