计算阶乘中0的个数
来源:互联网 发布:服装批发软件手机版 编辑:程序博客网 时间:2024/05/22 17:24
题目:
给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N=3628800.
N的末尾有两个0
1、分析:阶乘虽然大,但是求0的个数只有2x5,4x5,6x5,8x5才有0,但是5的数目最小,且都
要用到5,即可转化为求N!中5的个数
若N = 5,则5的个数为1个
N = 6,1个,
N = 10,有5和2x5两个5
N = 15,有5和2x5和3x5三个5,
N = 20,有5和2x5和3x5和4x5四个5
N = 25,有5和2x5和3x5和4x5和5x5五个5
……
即5的个数为Z = N/5+N/5^2/N/5^3……
2、分析:若N = 3,则N!=6;其二进制为110;最低位1的位置为2
若N = 4,则N!=24,其二进制为11000,最低位为4
……
则最低位的数应为N中2的个数加1
#include<iostream>using namespace std;int findZero(int n){ if (n < 5) return 0; int count = 0; while (n) { count += n / 5; n /= 5; } return count;}int findLowerLocation(int n){ if (n < 2) return 0; int count = 0; while (n) { //使用移位操作速度比除法要快 n = n >> 1; count += n; } return count + 1;}int main(){ int n = 4; cout << findZero(n) << endl; cout << findLowerLocation(n) << endl; system("pause"); return 0;}
0 0
- 计算阶乘中0的个数
- 计算N的阶乘中0的个数
- 计算n阶乘中尾部0的个数
- 计算阶乘结果中0的个数【每日一题】
- 阶乘中0的个数
- 计算阶乘n!末尾0的个数
- 计算阶乘末尾0的个数
- 计算阶乘n!末尾0的个数
- 1.5 计算阶乘末尾0的个数
- 计算n阶乘中尾部零的个数
- 算法学习十七----计算n的阶乘中0的个数
- 阶乘中0的个数-poj 1401
- 2.2阶乘中末尾0的个数
- 阶乘中末尾0的个数
- 计算n的阶乘尾数的0的个数
- 求大数的阶乘和末尾0个数的计算
- 求大数的阶乘和末尾0个数的计算
- 计算阶乘n!末尾的0的个数
- 自定义Cell(完成设置界面)并且自定义一个基类控制器(ZZSettingViewController)(自定义Cell4⃣️)
- LightOJ 1005
- UIColor和TintColor
- 类方法、静态方法、实例方法
- stdout&stderr引发的思考
- 计算阶乘中0的个数
- FZU 1056 扫雷游戏
- jdk目录结构
- final
- 用Notepad++替换记事本程序
- S3C2440裸机之S3C2440GPIO
- 新应用知识整理-应用中调用Google地图并实现定位
- java中给出一个不多于5位数的正整数,要求,第一是求出它是第多少位的,逆序打印出各位数字
- 自定义异常的用法,抛出异常后,代码仍然继续执行。