求一个大数阶乘的c++程序

求一个大数阶乘的c++程序能实现1-9999之间的任意一个数的阶乘一定要能运行随便找一个就喷的就谢啦请走远点不骂你们了... 求一个大数阶乘的c++程序 能实现1-9999之间的任意一个数的阶乘 一定要能运行 随便找一个就喷的就谢啦 请走远点 不骂你们了 展开
 我来答
百度网友bd199ca
2011-07-06 · TA获得超过522个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:376万
展开全部
授人以鱼不如授人以渔,我觉得很好写
1、首先明确,数大到一定程度以后,精度已经不那么重要了,可以牺牲一些精度
2、肯定了第1点后,可以参考浮点数的IEEE规范格式,你自己构建出一个格式,存储一个很大很大的数字。例如,中间运算过程中的181234567这个数,你可以将之用你自己的格式存成181006(181代表前三位,006代表10的6次方,解码时解算成181000000,等于是牺牲了后面的精度,用精度换存储空间)。
这么表示以后,181234567*65,就可以这么算——(1)先算181*65,等于11765,表示成117*10^2;(2)再把第(1)步中的指数加到指数上,就是006+2=008;(3)将结果存成117008 ;(4)循环进行下一次得迭代;(5)当迭代到1时,将运算结果AAABBB按照格式,解码出来,最终结果为result = AAA* 10^BBB
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fenglin2
2011-07-06
知道答主
回答量:5
采纳率:0%
帮助的人:8466
展开全部
//太大的数字不能搞
#include<iostream>
using namespace std;
void main()
{double n,s=1,i=2;
cout<<"请输入一个1~9999的整数"<<endl;
cin>>n;
for(;i<n+1;i++)
s=s*i;
cout<<s;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式