【转】雨中飞燕写的计算1000的阶乘。很牛逼
时间:2010-06-13 来源:sinodragon21
感谢雨中飞燕分享,原文地址:http://blog.pfan.cn/yzfy
#include<stdio.h>
#define N 1000 //要计算的N
long s[N]={1,1},n=N,t=2,a=1,b=0;
int main()//雨中飞燕之作
{
for(;a<=*s||(++t<=n?(b=0,a=1):0);(*s==a++&&b)?(*s)++:0)
s[a]=(b+=s[a]*t)%10000,b/=10000;
for(printf("%d",s[*s]);--*s>0;)printf("%04d",s[*s]);
return 0;
}
在 VC6,DevC,Code::Block上测试,算1000!用时毫秒级
最少字节数版本(从long定义变量开始计算共155字节,不 计算换行)
#include<stdio.h> //雨中飞燕之作
#define N 1000 //要计算的N
long s[N]={1},n=10000,t=2,a,b,m;main(){
for(;a<=m||++t<=N&&(a=b=0,1);m==a++&&b&&m++)
s[a]=(b+=s[a]*t)%n,b/=n;
for(printf("%d",s[m]);m--;)printf("%04d",s[m]);}
相关阅读 更多 +