nyoj 84-阶乘的0 (规律题)

84-阶乘的0

内存限制:64MB
时间限制:3000ms
特判: No

通过数:7
提交数:9
难度:3

题目描述:

计算n!的十进制表示最后有多少个0

输入描述:

第一行输入一个整数N表示测试数据的组数(1<=N<=100)
每组测试数据占一行,都只有一个整数M(0<=M<=10000000)

输出描述:

输出M的阶乘的十进制表示中最后0的个数
比如5!=120则最后的0的个数为1

样例输入:

复制

6
3
60
100
1024
23456
8735373

样例输出:

0
14
24
253
5861
2183837

PS:  观察数据可以发现,我们只需要求改组数据阶乘结果中有多少个5,那么末尾就有多少个零

C/C++代码实现:
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <map>
 8 #include <queue>
 9 #include <set>
10 #include <climits>
11
12 using namespace std;
13 const int MAXN = 35;
14 const int MY_MAX = INT_MAX;
15 const int EPS = 1e-8;
16 int N, M;
17
18 int main()
19 {
20     scanf("%d", &N);
21     while(N --)
22     {
23         scanf("%d", &M);
24         int cnt = 0;
25         while (M)
26         {
27             cnt += M / 5;
28             M /= 5;
29         }
30         printf("%d\n", cnt);
31     }
32     return 0;
33 }

原文地址:https://www.cnblogs.com/GetcharZp/p/9127402.html

时间: 2024-12-15 23:08:57

nyoj 84-阶乘的0 (规律题)的相关文章

nyoj 84 阶乘的0

计算n!的十进制表示最后有多少个0. 分析:乘以能被5整除的数时就会出现0.如果有多个5,如25=5*5,则会产生2个0. 所以,就是计算 /5 + /25 + /125 + ... 的结果. #include <stdio.h> int main (void) { int n, m; scanf ("%d", &n); while (n--) { scanf ("%d", &m); int sum = 0; while (m >=

51Nod 1003 阶乘后面0的数量(数学,思维题)

1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1003编程之美有讲:一个数 n

1003 阶乘后面0的数量

1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1其实只要循环除五就可以找到规律,其实也可以证明出来. 1 #include <iostream> 2 #include <cstdio> 3 #

hdu5351 MZL&#39;s Border(规律题,java)

转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud MZL's Border Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 905    Accepted Submission(s): 295 Problem Description As is known to all,

NYOJ 56 阶乘因式分解

阶乘因式分解(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后的s行, 每行有两个整数n,m. 输出 输出m的个数. 样例输入 2 100 5 16 2 样例输出 24 15 代码如下: #include<iostream> using namespace st

阶乘中0的个数

任何一个数分解质因数后,表达为2的x1次方   *     3的x2次方   *    5 的x3次方  等等 0的来源于2*5,x1>x2 ,所以阶乘中0的个数为5的个数,下面就很简单了. http://acm.nyist.net/JudgeOnline/problem.php?pid=84 import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-ge

ZOJ 3798 Abs Problem(规律题)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3798 Abs Problem Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Alice and Bob is playing a game, and this time the game is all about the absolute value! Alice has

HDU 4279 Number 规律题

题意: 定义函数F(x) : 区间[1,x]上的y是满足:GCD(x,y)>1 && x%y>0的 y的个数. 问:对于任意区间[l,r] 上的F(l···r) 有几个函数值是奇数的. 打表找规律. 打的是[1,x]区间的结果 把所有结果不相同的值打出来(因为结果是递增的,所以只观察不相同的结果) 发现:ans = x/2-2 || x/2-1 再把所有结果不同 && x/2-1的值打出来 发现 sqrt(x) &1 == 1 得到:ans = x/2-

1057 N的阶乘(51NOD基础题)

1057 N的阶乘(51NOD基础题) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的准确值. Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120 思路:由于最终结果比较大正常的 LL 肯定是不行的 , 所以仿照 10 进制数 构造出 10000 进制数 , 对万进制数的操作仿照十进制 #include <cstdio> #include <cstri