求大数字(100)阶乘最后一位非零数字,其结果为零,是为什么

> 问题详情
求整数 n(n≥0)阶乘的算法如下,其时间复杂度是 int fact(int n) { if (n&=1)return 1; retur
悬赏:0&答案豆
提问人:匿名网友
发布时间:
求整数 n(n≥0)阶乘的算法如下,其时间复杂度是 int fact(int n) { if (n&=1)return 1; return n*fact(n-1); }A.O(log2n)B.O(n)C.(nlog2n)D.O(n2)请帮忙给出正确答案和分析,谢谢!
论文写作技巧
网友回答(共1条)
匿名网友&&&&lv1&&&&提问收益:0.00&答案豆
您可能感兴趣的试题
1已知操作符包括‘+’、‘-’、‘*’、‘/’、‘(’和‘)’。将中缀表达式 a+b-a*((c d)/e-f)+g 转换为等价的后缀表达式 ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存在栈中的操作符的最 大个数是A.5B.7C.8D.112若一棵二叉树的前序遍历序列为 a, e, b, d, c,后序遍历序列为 b, c, d, e, a,则根结点的孩子结点A.只有 eB.有 e、bC.有 e、cD.无法确定
#include main(){\tint n, *p=NULL;\t*p=&n;
我有更好的答案
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……21:16 提问
网上找的c语言的求大数阶乘的答案 看不太懂这个算法 求大神解释算法
int main()
int a[9000]; //确保保存最终运算结果的数组足够大
int digit = 1; //位数
//阶乘的任一元素与临时结果的某位的乘积结果
int i, j, //carry:进位
printf("please in put n:\n");
scanf("%d",&n);
//将结果先初始化为1
for ( i=2; i&=n; i++ )
//开始阶乘,阶乘元素从2开始依次"登场"
//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘
for( j=1, carry=0;
temp = a[j-1] * i + //相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)
a[j-1] = temp % 10; //更新临时结果的位上信息
carry = temp / 10; //看是否有进位
while(carry)
//如果有进位
a[++digit-1] = carry % 10; //新加一位,添加信息。位数增1
carry = carry / 10; //看还能不能进位
printf("n ! = ");
//显示结果
for(j = j &=1;j--)
printf("%d",a[j-1]);
printf("\n");
按赞数排序
这有什么看不懂的。首先,阶乘运算就是大数乘法。
而大数乘法其实就是模拟手工计算。
也就是两个数字相乘,比如
abc*def = abc * d * 100 + abc * e * 10 + abc * f
而对于abc * f,又可以分为a * f * 100 + b * f * 10
以此类推。
再不会,找一本小学3年级的课本复习下。
int main()
int a[9000]; //确保保存最终运算结果的数组足够大
int digit = 1; //位数
//阶乘的任一元素与临时结果的某位的乘积结果
int i, j, //carry:进位
printf("please in put n:\n");
scanf("%d",&n);
//将结果先初始化为1
for ( i=2; i&=n; i++ )
//开始阶乘,阶乘元素从2开始依次"登场"
//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘
for( j=1, carry=0;
temp = a[j-1] * i + //相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)
a[j-1] = temp % 10; //更新临时结果的位上信息
carry = temp / 10; //看是否有进位
while(carry)
//如果有进位
a[++digit-1] = carry % 10; //新加一位,添加信息。位数增1
carry = carry / 10; //看还能不能进位
printf("n ! = ");
//显示结果
for(j = j &=1;j--)
printf("%d",a[j-1]);
printf("\n");
跟手工计算一样:
a[0..digit-1] == i!
比如i==5, i!=120, 那么
a[0]=0, a[1]=2, a[2]=1, digit=3
其他相似问题&&&&用程序得出100阶乘后有多少个0
&用程序得出100阶乘后有多少个0
全国计算机二级C语言程序考试题,偶得出了其后有多少个0,拿来与大家分享
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
用程序得出100阶乘后有多少个0
所需积分:1
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
用程序得出100阶乘后有多少个0
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
求100的阶乘.求100!的值.听说好像要用到高精乘法?补充一点,本人想要的是求解大数阶乘的比较通用的解法,二楼的解法即使能求出解,但不是我想要的.
哔哔◇00348
#include int main(){ int a[9000]; //确保保存最终运算结果的数组足够大 int digit = 1; //位数 //阶乘的任一元素与临时结果的某位的乘积结果int i,j, //进位printf("please in put n:\n");scanf("%d",&n);a[0] = 1; //将结果先初始化为1for(i = 2; i
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 c语言100的阶乘 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信