求一个整数的阶乘结果中后缀0的个数
问题描述:
给一个整数,请输出该数字阶乘的后缀0的个数,例如:
数字7,它的阶乘为5040,后面有一个0,则输出1;还有数字10,它的阶乘为3628800,后面有两个0,则输出2。
/*
功能:求一个整数的阶乘含有多少个0
如 5! = 120(1个0)
8! = 40320(1个0)
10! = 3628800(2个0)
15! = 1307674368000(3个0)
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
int sum(int n)
{
int c = 0;
while(n >= 5)
{
c += fun(n);
n--;
}
return c;
}
/*
功能: 求n是5的多少次幂
返回值:n是5的整数次幂(如i),则返回i;否则返回0
*/
int fun(int n) // 返回n是5的多少次幂
{
int i = 0;
while(n >= 5)
{
if(n % 5 == 0)
{
n /= 5;
i++;
}
else
break;
}
return i;
}
int main()
{
int n = 30;
while(n >= 1)
{
printf("sum(%d) = %d\n", n, sum(n));
n--;
}
return 0;
}
编译运行:
[zcm@t #179]$make
gcc -g -c -o a.o a.c
gcc -g -o a a.o -lm
[zcm@t #180]$./a
sum(30) = 7
sum(29) = 6
sum(28) = 6
sum(27) = 6
sum(26) = 6
sum(25) = 6
sum(24) = 4
sum(23) = 4
sum(22) = 4
sum(21) = 4
sum(20) = 4
sum(19) = 3
sum(18) = 3
sum(17) = 3
sum(16) = 3
sum(15) = 3
sum(14) = 2
sum(13) = 2
sum(12) = 2
sum(11) = 2
sum(10) = 2
sum(9) = 1
sum(8) = 1
sum(7) = 1
sum(6) = 1
sum(5) = 1
sum(4) = 0
sum(3) = 0
sum(2) = 0
sum(1) = 0
[zcm@t #181]$
网上一位牛人写了一个更加简洁的自算法,把我的sum()和fun()合并到了一个函数f(),如下:
int f(unsigned int n)
{
if (n < 5) {
return 0;
}
return n / 5 + f(n / 5);
}
求一个整数的阶乘结果中后缀0的个数相关推荐
- 一个整数的阶乘最后有多少个0
问题: 一个整数的阶乘最后有多少个0 分析:整数N的阶乘 N!=1×2×3×4×5×6×··· ×N 我们可以对N!进行分解质因数 即 N!=2x ×3y ×5z×7w ·········· 其中能 ...
- 求组合数的算法 java,求一个整数的组合数算法(java)
开始需求: 产生一堆数字. 然后我输入一值,这个值等于这些数中的一个,或是任意多个数的和.但只能是其中一种情况. 比如我输入8.这些数里面,可以直接有8. 也可以是1+2+5 的和,也可以是 1+7 ...
- Java黑皮书课后题第2章:2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加
2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加 题目 题目描述 运行示例 题目槽点与破题 题目槽点 破题 如何提取数字 代码块 方法评价 题目 题目描述 2.6 ...
- C/C++求一个整数的二进制中1的个数
求一个整数的二进制中1的个数 收藏 题目:输入一个整数,求该整数的二进制表达中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 分析:这是一道很基本的考查位运算的面试题.包 ...
- 对一个正整数n,求出n!中末尾0的个数。
对一个正整数n,求出n!中末尾0的个数. 输入 输入有若干行.每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n≤1000000000). 输出 对输入行中的每一个数据 ...
- 第六章第二题(求一个整数各位数字之和)(Sum the digits in an integer)
*6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和.使用下面的方法头: public static int sumDigits(long n) 例如:sumDigits(234) ...
- c语言整型最大数,C语言:求一个短整型正整数中的最大数字
C语言:求一个短整型正整数中的最大数字 关注:84 答案:5 手机版 解决时间 2021-01-16 02:17 提问者舊倳偂歡 2021-01-15 14:26 例如整数12354中的最大数字是 ...
- C++求一个整数的各位数字总和(附完整源码)
C++求一个整数的各位数字总和算法 C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) int su ...
- Java黑皮书课后题第6章:*6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和。使用下面的方法头:public static int sumDigits(long n)
6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和.使用下面的方法头:public static int sumDigits(long n) 题目 题目概述 槽点 代码 运行示例 ...
最新文章
- Python进阶08 异常处理
- yolov4论文_YOLOv4论文详细解读
- 梦幻模拟战更新服务器正在维护,梦幻模拟战魔之启示录更新维护公告
- Python global文件的全局变量使用
- tcp,udp报文最大长度
- 浅谈android中的自定义封装易用的Dialog
- 无心剑随感《译诗但求达意传神》
- Linux内存管理 brk(),mmap()系统调用源码分析1:基础部分
- java 线程 寄存器 地址_Java高级进阶多线程学习之路(四)CPU与内存
- HTTP method POST is not supported by this URL解决方案
- session的概念特点及原理
- Google TPU的发展历程与思考(一)
- tensorboard 可视化 projector
- java那块最难_Java哪块最难学?
- RHY融获基金数字资产投资,海外扩建加速
- python求一组数的最大值_用python实现在一组数据中,寻找到最大数和最小数并输出最大数和最小数所在的位置...
- 数据库基础及常用SQL语句
- poj3281 Dining (最大流)
- 互联网快讯:微信上线“仅传输文件”新功能;极米RS Pro 2获用户肯定;网宿科技与奇安信达成战略合作
- 班级奖学金管理系统java_(奖学金评定管理系统设计)(最终版)