HDU_1042N!(关于阶乘)
来源:互联网 发布:手机淘宝怎么上咸鱼 编辑:程序博客网 时间:2024/05/19 22:58
N!
123
126
#include<iostream>using namespace std;int a[8001],n;int main(){ while(scanf("%d",&n)!=EOF) { int i,j; memset(a,0,sizeof(a));a[0]=1; for(i=2;i<=n;i++) { for(j=0;j<8000;j++) a[j]*=i; for(j=0;j<8000;j++) { a[j+1]+=a[j]/100000; a[j]%=100000; } } for(i=8000;i>=0&&!a[i];i--); printf("%d",a[i--]); for(;i>=0;i--) printf("%05d",a[i]); printf("\n"); } return 0;}这是杭电中的题。我用以往的思路敲的代码,无法通过。经过很多次数据测试才明白是结尾“0”的原因,没处理好。
所以,有了对“0”的输出。%d是空输出格式,后面接05,表示输出的数有五位,不够用0补!注意如果去掉0,就变成用空格补!如果是.5,就表示小数点后保留5位!
还有一些有趣的关于阶乘的问题,分享一下。。。
1 100的阶乘,末尾有几个连续的零?(如:2100的最后有2个零)
2 1到100的阶乘的和的末位数是几?
3 10000的阶乘,末尾有多少个连续的零?
解答和分析:
1 100的阶乘,末尾有几个连续的零?
答案是24。
思路有两个:
先讲笨方法,采用分类讨论的方法。你可以知道100的阶乘里有无数的2,比如8=2*2*2等等。而10是由2*5组成的,其他的数字无论怎么乘都都无法形成10。所以我们只要关注2和5即可。由于100的阶乘中2很多,它们都嗷嗷待哺的希望和5结合成10。你还应该注意到一个情况,25、50、75这三个比较特殊,25乘以若干个2会得到100,而50*2会得到100,而75乘以若干个2后会得到1500,所以这三个数会分别产生2个0。好了,现在可以开始数了,10、20..100有11个0,5、15..95有10个0,而25、50和75又会多产生1个0,所以11+10+3=24。
再讲巧方法:100/5+100/(5*5)=24。这是因为包括5这个因子的数有100/5=20个,而包含25因子的有100/25=4个,所以结果为24个。
2 1到100的阶乘的和的末位数是几?
答案:3
这题找规律,1!=1; 2!=2; 3!=6; 4!=24; 5!=120;…你可以发现5的阶乘之后的末尾都是0。所以只有1到4的阶乘会产生个位数,所以1+2+6+24=33,所以答案就是3!
3 10000的阶乘,末尾有多少个连续的零?
答案: 10000/5+10000/25+10000/125+10000/625+10000/3125=2000+400+80+16+3=2499
知道什么规律吗?除数 5,5*5,5*5*5,5*5*5*5,5*5*5*5*5.因为10000是五位数。再想一下,1000的阶乘,末尾有多少个连续的零?
答案:1000/5+1000/25+1000/125+1000/625=200+40+8+1=249.
625=5*5*5*5,是4个5相乘,1000是四位数。。。明白???
- HDU_1042N!(关于阶乘)
- 关于阶乘问题
- 关于阶乘的问题
- 关于阶乘的题目
- 关于阶乘的两个问题
- 关于阶乘你了解多少?
- 关于大数的阶乘与确定阶乘结果的位数
- 关于阶乘的四个JAVA算法。
- 关于求一个正整数阶乘的实现
- 关于阶乘(源自编程之美)
- 关于阶乘的四个JAVA算法
- OJ上关于阶乘位数的公式
- 关于阶乘的几道智力题
- 水题入门:关于大数阶乘
- 关于求阶乘和的问题
- 关于阶乘的面试题总结
- 阶乘
- 阶乘
- 移动APP原型设计
- 黑马程序员-java5的线程锁技术Lock,Condition
- 新浪微博OAuth 认证详解
- POJ 2185 KMP (最小循环模块)
- 最大流-FoldFulkerson算法
- HDU_1042N!(关于阶乘)
- QT串口通信
- 常用上网增强类Chrome扩展
- istringstream过滤首尾的空字符
- Python学习笔记
- 四元数姿态的梯度下降法推导和解读
- 我不会告诉你,你就是一白痴
- 在Eclipse JavaEE中集成maven
- Myeclipse导入已存在的Maven项目