计算阶乘结果中0的个数【每日一题】
来源:互联网 发布:南宁众才商贸知乎 编辑:程序博客网 时间:2024/05/24 06:52
题目:给定一个整数N,那么N的阶乘N!末尾有多少个0呢?
例如:N=10,N!=3 628 800,N!的末尾有两个0
解决方法:
两个大数字相乘都可以拆分多个质数相乘,而质数相乘结果为0的只有2*5。那么两个数相乘尾数为0的个数其实就是依赖2和5的因子个数。又因为每两个连续数字就会有一个2,个数很充足所以只需要关心5因子的个数就行了。
那么怎么计算n!中5因子的个数呢?
把5的倍数都找出来,n!=(5*k)(5(k-1)*…*5*A)A为不含5因子的数相乘的结果,n=5*k+r(0<=r<=4)。假设f(n!)是计算阶乘n尾数0的个数,而g(n!)是计算n!中5因子的个数的那么就会有以下公式:
f(n!) = g(n!) = g(5^k*k!*A)=k+g(k!)=k+f(k!)其中k=n/5取整数
举个栗子:
f(5!)=1+f(1!)=1;
f(10!)=2+f(2!)=2
f(20!)=4+f(4!)=4
f(1000!)=200+f(200!)=200+40+f(40!)=240+8+f(8!)=248+1+f(1!)=249
#include <iostream>using namespace std;int GetN_1(int n){ if(n<5) return 0; else return (n/5+GetN_1(n/5));}int main(){ cout<<GetN_1(10)<<endl; return 0;}
阅读全文
0 0
- 计算阶乘结果中0的个数【每日一题】
- 计算阶乘中0的个数
- 大数阶乘结果中零的个数
- 计算N的阶乘中0的个数
- 计算n阶乘中尾部0的个数
- 求1000阶乘的结果中0的个数和结果的位数(利用数组)
- 阶乘结果零的个数
- 阶乘中0的个数
- 计算阶乘n!末尾0的个数
- 计算阶乘末尾0的个数
- 计算阶乘n!末尾0的个数
- 1.5 计算阶乘末尾0的个数
- 整数二进制位中1的个数【每日一题】
- 求一个整数的阶乘结果中后缀0的个数
- Factorial Trailing Zeroes 阶乘结果中后缀为0的个数
- 求1000的阶乘结果尾部0的个数
- 求1000的阶乘结果尾部0的个数
- 求1000的阶乘结果尾部0的个数
- 83. Remove Duplicates from Sorted List
- 在Linux上安装JDK
- Stars POJ
- linux下CentOS简体中文乱码问题
- Jvm dump介绍与使用
- 计算阶乘结果中0的个数【每日一题】
- 自定义组合控件
- LA 4256 Salesman
- 业界 | OpenAI提出强化学习近端策略优化,可替代策略梯度法
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
- 2017滴滴校招 末尾0的个数(数学知识)
- 关于yii2中支付宝电脑网站支付
- Python
- makefile 模板