阶乘(草稿未完成)
来源:互联网 发布:小米手机刷机救砖软件 编辑:程序博客网 时间:2024/05/06 14:23
1.计算阶乘
大多数教科书式的代码,但是教科书式的代码并不是效率最优的.
int factorial1(int n){if (n == 1 || n == 0)return 1;return n*factorial1(n-1);}int factorial2(int n){int i,res=1;for(i=1;i<=n;++i)res *=i;return res;}
2. 计算阶乘末尾第一个非0数字
3.阶乘末尾有多少个0
题目来自于<编程之美>的<不要被阶乘吓倒>
思路:哪些数相乘能得到10呢?显然是2*5才能得到10,对N!进行质因数分解,N!=(2^x)*(3^y)*(5^z).........,所以0的个数只与x和z有关,每一对2,5就能组成一个末位0.因为2的质因数比5的质因数要多,所以,只需要算出z的个数即可(即只需要算出5的质因数个数).
解法一:要计算z,最直接的方法就是蛮力计算i(i=1,2,3....N)的因式分解中5的指数,然后求和.
ret = 0;for(i=1; i<=N; ++i){j=i;while(j % 5 == 0){++ret;j /= 5;}}
解法二:利用公式:z=[N/5]+[N/5^2]+[N/5^3]+.....(指数函数最终无穷趋向于x轴)(公式不好记,后面说一下递归的思路)
公式中,[N/5]表示不大于N的数中5的倍数贡献一个5,[N/5^2]表示不大于N的数中5^2再贡献一个5,.....
5. 判断数值 m 是否可以整除 n!
6.数字N能否表示成若干个不相同的阶乘的和:
参考资料:
http://developer.51cto.com/art/201104/254914.htm
http://blog.csdn.net/xiaofengsheng/article/details/4834628
《编程之美》
- 阶乘(草稿未完成)
- 软件架构——未完成草稿而已
- 理解C++成员函数指针--草稿未完成
- (未完成草稿)【面试题】Sugar Or Chilli
- 从零开始—素数阶乘二合一程序代码(草稿)
- 草稿
- 草稿
- 草稿
- 草稿
- 草稿
- 草稿
- 草稿
- 草稿
- (草稿)
- 草稿
- 草稿
- 草稿
- 草稿
- 使用pull解析xml和生成xml文件
- angry Birds 学习札记
- 进程控制
- 数据结构重新复习-线性表
- 曝阿里高管集体无码裸照,要赤身打到企鹅老家去
- 阶乘(草稿未完成)
- 用c语言实现简单的顺序结构
- IOS 常识
- Android学习篇章59-广播BroadcastReceiver-闹钟
- Android开发系列:调试问题
- UVA 10079 Pizza Cutting(数论)
- sdk, IDE的区别
- 编译生成本地NS-3文档
- v8学习---获取全局对象成员