|
![]() | 作者: lovejiang [lovejiang]
![]() |
登录 |
呵呵 请教一个问题的算法 s=1!+2!+3!+4+----+100! 如果用一般的方法 肯定会溢出 |
地主 发表时间: 04-04-05 20:48 |
![]() | 回复: lida1818 [lida1818] ![]() |
登录 |
![]() ![]() main() { long s[23],t[23],a,b,c,g=0,e,f,k=0,p=10000000; int x,y; for (x=22;x>=0;s[x]=0,x--); for (f=1;f<=100;f++) { for (x=22;x>=0;t[x]=0,x--); t[22]=1; for (e=1;e<=f;e++) for(x=22;x>=0;c=t[x],c*=e,a=c/p,b=c%p,t[x]=b+g,g=a,x--); for(y=22;y>=0;c=t[y]+s[y],a=c/p,b=c%p,s[y]=b+k,k=a,y--); } printf("%ld",s[0]); for(x=1;x<=22;printf("%.7ld",s[x]),x++); getch(); } |
B1层 发表时间: 04-04-05 23:30 |
![]() | 回复: sniper167 [sniper167] ![]() |
登录 |
老兄,加点注释行吗? 我啥都不会呀! |
B2层 发表时间: 04-04-06 10:00 |
![]() | 回复: lovejiang [lovejiang] ![]() |
登录 |
是啊 我也看不懂呢 |
B3层 发表时间: 04-04-06 12:26 |
![]() | 回复: lida1818 [lida1818] ![]() |
登录 |
看不懂没关系![]() 这是最差劲的算法 ![]() |
B4层 发表时间: 04-04-06 12:57 |
![]() | 回复: yingzike [yingzike] ![]() |
登录 |
总比没算法好呀![]() ![]() ![]() 也许就是有最有效的达到目的呢 ![]() ![]() ![]() |
B5层 发表时间: 04-04-06 13:50 |
![]() | 回复: sniper167 [sniper167] ![]() |
登录 |
知道了总比没有好呀 |
B6层 发表时间: 04-04-06 15:17 |
![]() | 回复: lovejiang [lovejiang] ![]() |
登录 |
这倒是的 谢谢了呵呵 ![]() ![]() |
B7层 发表时间: 04-04-06 18:31 |
![]() | 回复: lida1818 [lida1818] ![]() |
登录 |
不好意思注解,一个很烂的算法。 上面的程序就等价下的程序 #define STRMAX 23 #define FLOG 10000000 main() { long s[STRMAX]; /* 这个是存放和的数组*/ long t[STRMAX]; /*这个是计算N!时用的数组*/ long a,b,c,g=0; long e,f; long h,i,j,k=0; int x,y; for (x=STRMAX-1;x>=0;x--)s[x]=0; for (f=1;f<=100;f++) { for (x=STRMAX-1;x>=0;x--)t[x]=0; t[STRMAX-1]=1; for (e=1;e<=f;e++) for(x=STRMAX-1;x>=0;x--) /* 计算N! */ { c=t[x],c*=e;/*这里本来还应该加个if语句,这样就可以少运算很多次*/ a=c/FLOG; /* 要进位的数,准备放入t[x+1]*/ b=c%FLOG; /* 要放入t[x]中的数*/ t[x]=b+g; g=a;逻辑 } for(y=STRMAX-1;y>=0;y--) /*计算S(N)=S(N-1)+N!*/ {/*这里也应该加个if语句,减少运算次数*/ h=t[y]+s[y]; i=h/FLOG; /* 要进位的数,准备放入s[y+1]*/ j=h%FLOG; /* 要放入t[x]中的数*/ s[y]=j+k; k=i; } } printf("%ld",s[0]); for(x=1;x<=STRMAX-1;x++)printf("%.7ld",s[x]); getch(); } [此贴被 烟雨平生(lida1818) 在 04月06日20时28分 编辑过] |
B8层 发表时间: 04-04-06 20:15 |
![]() | 回复: sniper167 [sniper167] ![]() |
登录 |
TO:烟雨平生 [lida1818] 太谦虚了!!! 感谢了!!! ![]() ![]() |
B9层 发表时间: 04-04-06 20:42 |
![]() | 回复: snntss [snntss] ![]() |
登录 |
平生你真强啊,这回我看懂了,谢了!! |
B10层 发表时间: 04-04-07 15:33 |
![]() | 回复: lovejiang [lovejiang] ![]() |
登录 |
to: 烟雨平生 [lida1818 thanks very much |
B11层 发表时间: 04-04-07 18:09 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号