[求助] 求一个范本
小弟最近刚开始学习C语言,看书看了一章就遇到一个问题.据说是一个经典的编程.大概的内容如下:在国际象棋的棋盘里放米,第一格放1个 第2格放2个..... 以此类推,每一格放的都是前一格的两倍.一共有64格,问所有的格子放满需要多少米?小弟写出来的东西,每次检验 如果把循环的次数控制在15以下 结果就是对的.但是一旦到64,那么答案就肯定错误,大概是溢出了.哪位大虾可以帮忙写个范本给小弟学习学习.
拜谢了
[此贴子已经被作者于2007-5-29 23:47:46编辑过]
最终BOSS计算器来了,
#include <stdio.h>
#define Q 100000000
main()
{
long int m1,n,i,m2,m3,m4,s1,s2,s3,s4;
kk:
m1=1;m2=0;m3=0;m4=0;
s1=1;s2=0;s3=0;s4=0;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
m4=(2*m4/Q+2*m4)%Q;
m3=(2*m2/Q+2*m3)%Q;
m2=(2*m1/Q+2*m2)%Q;
m1=(2*m1)%Q;
s4=(s4+m4+(s3+m3)/Q)%Q;
s3=(s3+m3+(s2+m2)/Q)%Q;
s2=(s2+m2+(s1+m1)/Q)%Q;
s1=(s1+m1)%Q;
}
printf("%08ld%08ld%08ld%08ld\n",s4,s3,s2,s1);
goto kk;
}
输入64结果:18446744073709551615跟书上写的结果一样~7楼你的误差太大了
[此贴子已经被作者于2007-5-30 16:55:12编辑过]