sdut3138: N!(计算n!中结尾零的个数)
2024-10-21 10:17:41
题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=3138
算法思想:在1-10两个数相乘要产生0,只有 10×1=2×5,2×5。
200!=200×199×198……×2×1=2×5×2×5×2×199…. ×2×1;可以分解为质数相乘的形式,很明显有2的个数比5的多(2*5=10),所以只要求出200的阶乘可分解出多少个质因子5,就可得到200的阶乘结尾的连续的零的个数.
即:num=[200/5]+[200/5/5]+[200/5/5/5].
注: [x]表示对x取整.
代码:
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <map>
#include <queue>
typedef long long ll;
#define inf 0x3f3f3f3f
using namespace std;
ll sum;
int main()
{
int T,K=,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
sum=;
while(n)
{
sum+=n/;
n/=;
}
printf("Case #%d: %lld\n",++K,sum);
}
return ;
}
最新文章
- PostgreSQL杀掉死锁的链接
- Win32程序和控制台应用程序的项目互转设置
- .NET 常见的偏门问题
- android Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
- NeHe OpenGL教程 第十九课:粒子系统
- apache配置常用模块
- 一起简单写一下AIDL,入个门
- H. 硬币的水问题II
- Date与SimpleDateFormat
- android 实践项目
- JAVA优化建议
- 201521123004《Java程序设计》第6周学习总结
- Nginx的负载均衡 - 加权轮询 (Weighted Round Robin) 下篇
- 学习笔记—HTML基础标签
- Docker JDK镜像
- linux搭建
- Delphi 修改本地日期和时间
- getParameter和getAttribute区别
- python 类函数
- [Java123] Java中的System.exit