求助一道ACM题
问题描述:
求助一道ACM题
一道很简单的ACM题目,题在这里
我写的代码如下:
#include
using namespace std;
int main(){
int n,m[30];
cin>>n;
for(int i=0;i=0;j--){
cout
答
和其他人问的吃一半多吃一个的问题没什么两样1/2 和 2/3不同程序几乎一样昨天总桃子数== (今天总桃子数+1)*3.0/2.0今天总桃子数目 是 昨天吃了2/3再多次一个的结果 理解上面公式!请看:#define N 10/....非常感谢您的答案,我也理解了。但是我想知道自己的代码哪里错了……万望指教,感激~晕, 理解了还不知道你的错在哪里??if(i==0)m[i]=1;//你这是第N天的吧也就是最后一天只剩下一个的那一天m[i]=(m[i-1]+1)*3;//就这个错了!!!没符合我上面写的公式除2 少除以2就对了 疏忽了吧 忘了个2 吃2/3 那么前一天是今天的加1然后乘以3除以2吃了2/3再多吃一个,就说明前一天是今天的+1再3倍啊,这里没错吧……对是3倍确实是溢出问题!!!3^29 = (2^29)*(1.5^29) 至少大于 (2^29)*(2^14) ==2^43好大的数:输入30 结果必须要43位(还多)以上的二进制数来表示double : 32位(要看编译器了)//结果当然溢出比如输入21必然有溢出问题int: 32位(要看编译器了)longdouble ??我没写过这样的 你可以试试看你的数据类型是多少位的。(如果低于43位 输入30,就是错的其他也是一样考虑)cout