我試圖解決project euler 31:錯誤導致項目歐拉31
在英格蘭的貨幣是由英鎊,£和便士,P,並 有八個硬幣一般循環:
1p,2p,5p,10p,20p,50p,1英鎊(100p)和2英鎊(200p)。它可以 下列方式使£2:1
1×£+ 1×50P + 2×20P + 1×5P + 1×2P + 3×1P
有多少種方式可以2英鎊是 使用任何數量的硬幣?
與此代碼:
#define to2(x) ((x)/2+1)
int to5(x)
{
int acc=1;
for(;x>0;x-=5)
acc+=to2(x);
return acc;
}
int to10(x)
{
int acc=1;
for(;x>0;x-=10)
acc+=to5(x);
return acc;
}
int to20(x)
{
int acc=1;
for(;x>0;x-=20)
acc+=to10(x);
return acc;
}
int to50(x)
{
int acc=1;
for(;x>0;x-=50)
acc+=to20(x);
return acc;
}
int to100(x)
{
int acc=1;
for(;x>0;x-=100)
acc+=to50(x);
return acc;
}
int main()
{
int test = to100(200)+1;
printf("%d",test);
return 0;
}
但代碼給出了73685,而不是73682,但是我不知道爲什麼,可能有人幫我PLZ?
它應該計算什麼?這個問題應該是獨立的,而不僅僅是在看過其他網站的作業之後。 – jpalecek 2012-02-06 15:30:11
如果可以的話,不是每個人都知道歐拉項目31.你想要解決什麼問題? – Bart 2012-02-06 15:31:09