[合集]请教有关阶乘的问题!谢谢

[复制链接]
查看11 | 回复0 | 2021-1-29 05:17:06 | 显示全部楼层 |阅读模式
───────────────────────────────────────
作者lkworf(三教506),信区:AlgoDesign
标题请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月27日21:54:50星期一),站内信件
───────────────────────────────────────
我用数组编了一个求解10000!的程序。但是只能算到1300多一点。数字再大就会出现问题。哪位大哥告诉我是怎么回事??谢谢~//求阶乘#includeiostream.h#includeiomanip.h#defineNUM900voidmain(void){inta[NUM]={1};intn,i,j,d,t,s,r;coutPleaseenterthedatum.\n;cinn;for(i=1;i=n;i++){j=0;d=0;while(a[j]==0)j++;do{t=a[j]*i+d;d=t/10000;a[j]=t%10000;j++;s=0;for(r=j;rNUM;r++){if(a[r]!=0){s=1;break;}}}while(!(d==0s==0));}couta[j-1];for(j=j-2;j=0;j--)if(a[j]10)cout000a[j];elseif(a[j]=10a[j]100)cout00a[j];elseif(a[j]=100a[j]1000)cout'0'a[j];elsecouta[j];coutendl;}
───────────────────────────────────────
作者carlis(萧晨·梦),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月27日22:04:42星期一),转信
───────────────────────────────────────
lkworf (三教506) 在 ta 的帖子中提到:我用数组编了一个求解10000!的程序。但是只能算到1300多一点。数字再大就会出现问题。哪位大哥告诉我是怎么回事??谢谢~//求阶乘#includeiostream.h#includeiomanip.h#defineNUM90010000!肯定不止这个NUM啦.......voidmain(void){inta[NUM]={1};intn,i,j,d,t,s,r;coutPleaseenterthedatum.\n;...........................
───────────────────────────────────────
作者SmallX(godsguideme),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月27日22:04:48星期一),转信
───────────────────────────────────────
晕,排排版吧ps:用的是什么编译器?lkworf (三教506) 在 ta 的帖子中提到:我用数组编了一个求解10000!的程序。但是只能算到1300多一点。数字再大就会出现问题。哪位大哥告诉我是怎么回事??谢谢~//求阶乘#includeiostream.h#includeiomanip.h#defineNUM900voidmain(void){inta[NUM]={1};intn,i,j,d,t,s,r;coutPleaseenterthedatum.\n;...........................
───────────────────────────────────────
作者SmallX(godsguideme),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月27日22:05:23星期一),转信
───────────────────────────────────────
不是这么简单,他说13xx就算不动了,显然是有bug啊carlis (萧晨·梦) 在 ta 的帖子中提到:10000!肯定不止这个NUM啦.......
───────────────────────────────────────
作者carlis(萧晨·梦),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月27日22:07:00星期一),转信
───────────────────────────────────────
我没细看程序,不过感觉1300!多一点就超过它定的数祖长度了建议把NUM改大一点再debugSmallX (godsguideme) 在 ta 的帖子中提到:不是这么简单,他说13xx就算不动了,显然是有bug啊
───────────────────────────────────────
作者Symbol(不預則廢*除懼去戾*戒!),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月28日11:21:05星期二),转信
───────────────────────────────────────
i=1331.j=896i=1332.j=897i=1333.j=898i=1334.j=898i=1335.j=899i=1336.j=900
~~~~~~~~数组越界读取……
i=1337.j=901i=1338.j=902i=1339.j=902i=1340.j=903i=1341.j=904

i=9996.j=8911i=9997.j=8912i=9998.j=8913i=9999.j=8914i=10000.j=8915
~~~~~~~~~~数组长度9000就足够了。
lkworf (三教506) 在 ta 的帖子中提到:标题:请教有关阶乘的问题!谢谢发信站:北大未名站(2003年10月27日21:54:50星期一),站内信件
我用数组编了一个求解10000!的程序。但是只能算到1300多一点。数字再大就会出现问题。哪位大哥告诉我是怎么回事??谢谢~//求阶乘#includeiostream.h#includeiomanip.h#defineNUM900voidmain(void){inta[NUM]={1};intn,i,j,d,t,s,r;coutPleaseenterthedatum.\n;cinn;for(i=1;i=n;i++){j=0;d=0;while(a[j]==0)j++;do{t=a[j]*i+d;d=t/10000;a[j]=t%10000;j++;s=0;for(r=j;rNUM;r++){if(a[r]!=0){s=1;break;}}}while(!(d==0s==0));}couta[j-1];for(j=j-2;j=0;j--)if(a[j]10)cout000a[j];elseif(a[j]=10a[j]100)cout00a[j];elseif(a[j]=100a[j]1000)cout'0'a[j];elsecouta[j];coutendl;}
--
───────────────────────────────────────
作者sunzx(『radiboga』@^@),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月28日11:26:06星期二),转信
───────────────────────────────────────
刘从义老大爷的作业?lkworf (三教506) 在 ta 的帖子中提到:我用数组编了一个求解10000!的程序。但是只能算到1300多一点。数字再大就会出现问题。哪位大哥告诉我是怎么回事??谢谢~//求阶乘#includeiostream.h#includeiomanip.h#defineNUM900voidmain(void){inta[NUM]={1};intn,i,j,d,t,s,r;coutPleaseenterthedatum.\n;...........................
───────────────────────────────────────
作者sunzx(『radiboga』@^@),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月28日11:27:22星期二),转信
───────────────────────────────────────
原来10,000的阶乘就那么几位啊.前面nankaiwolf有能算到30,000+的程序...好像只用了64K-的内存...Symbol (不預則廢*除懼去戾*戒!) 在 ta 的帖子中提到:
i=1331.j=896i=1332.j=897i=1333.j=898i=1334.j=898i=1335.j=899i=1336.j=900~~~~~~~~数组越界读取……i=1337.j=901i=1338.j=902...........................
───────────────────────────────────────
作者Symbol(不預則廢*除懼去戾*戒!),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月28日11:34:04星期二),转信
───────────────────────────────────────
sunzx (『radiboga』@^@) 在 ta 的帖子中提到:原来10,000的阶乘就那么几位啊.前面nankaiwolf有能算到30,000+的程序...好像只用了64K-的内存...
64k的内存能干很多事情了……
数组中每个元素存的东西比较多……t=a[j]*i+d;d=t/10000;a[j]=t%10000;
───────────────────────────────────────
作者sunzx(『radiboga』@^@),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月28日11:48:22星期二),转信
───────────────────────────────────────
嗯.Symbol (不預則廢*除懼去戾*戒!) 在 ta 的帖子中提到:64k的内存能干很多事情了……数组中每个元素存的东西比较多……t=a[j]*i+d;d=t/10000;a[j]=t%10000;
───────────────────────────────────────
作者lfxzm(逍遥人),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月28日20:54:27星期二),站内信件
───────────────────────────────────────
lkworf (三教506) 在 ta 的帖子中提到:我用数组编了一个求解10000!的程序。但是只能算到1300多一点。数字再大就会出现问题。哪位大哥告诉我是怎么回事??谢谢~//求阶乘#includeiostream.h#includeiomanip.h#defineNUM900voidmain(void){inta[NUM]={1};intn,i,j,d,t,s,r;coutPleaseenterthedatum.\n;...........................大哥!!!别把机子弄坏拉!!
───────────────────────────────────────
作者sunzx(nonickname),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月29日10:45:13星期三),转信
───────────────────────────────────────
弄不坏的lfxzm (逍遥人) 在 ta 的帖子中提到:大哥!!!别把机子弄坏拉!!
───────────────────────────────────────
作者kokolu(岁月如歌),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月29日21:40:13星期三),转信
───────────────────────────────────────
Symbol (不預則廢*除懼去戾*戒!) 在 ta 的帖子中提到:i=9998.j=8913
i=9999.j=8914
i=10000.j=8915
~~~~~~~~~~数组长度9000就足够了。
这个怎讲?我算出来十进制情况下面有35657位
───────────────────────────────────────
作者carlis(萧晨·梦),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月29日21:43:48星期三),转信
───────────────────────────────────────
他用缩位存储kokolu (岁月如歌) 在 ta 的帖子中提到:i=9998.j=8913i=9999.j=8914i=10000.j=8915~~~~~~~~~~数组长度9000就足够了。这个怎讲?我算出来十进制情况下面有35657位
───────────────────────────────────────
作者kicc(无),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月30日09:40:52星期四),转信
───────────────────────────────────────
想知道有多少位的话,可以试试做下面这道题
http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1423
kokolu (岁月如歌) 在 ta 的帖子中提到:i=9998.j=8913i=9999.j=8914i=10000.j=8915~~~~~~~~~~数组长度9000就足够了。这个怎讲?我算出来十进制情况下面有35657位
───────────────────────────────────────
作者nankaiwolf(南开狼——学习,不能傻比了……),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月31日08:41:27星期五),站内信件
───────────────────────────────────────
阶乘!又见阶乘!
前面有程序的吧?还有一个兄弟给我重新调试了一下,可以比我论文中的计算上限再多一两千还是四五千来着?忘了……
lkworf (三教506) 在 ta 的帖子中提到:我用数组编了一个求解10000!的程序。但是只能算到1300多一点。数字再大就会出现问题。哪位大哥告诉我是怎么回事??谢谢~//求阶乘#includeiostream.h#includeiomanip.h#defineNUM900voidmain(void){inta[NUM]={1};intn,i,j,d,t,s,r;coutPleaseenterthedatum.\n;...........................
───────────────────────────────────────
作者nankaiwolf(南开狼——学习,不能傻比了……),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月31日08:43:38星期五),站内信件
───────────────────────────────────────
这个一定要re,我爸当年用的还是AppleII和8086呢……
Symbol (不預則廢*除懼去戾*戒!) 在 ta 的帖子中提到:64k的内存能干很多事情了……数组中每个元素存的东西比较多……t=a[j]*i+d;d=t/10000;a[j]=t%10000;
───────────────────────────────────────
作者kicc(无),信区:AlgoDesign
标题Re:请教有关阶乘的问题!谢谢
时间北大未名站(2003年10月31日09:24:52星期五),站内信件
───────────────────────────────────────
真的想把阶乘算好,看附件的论文吧。其实多少能算,多少不能算都是跟实现有关的。比如python语言,本身就支持大整数运算,如果不对阶乘进行优化,只使用最简单的循环乘法,好像算10000!是比较快的(我的1G的机器上4,5秒吧,python是解释型语言,速度比解释运行的java还慢)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行