LightOj 1138 Trailing Zeroes (III)
2024-08-28 02:05:17
题目描述:
假设有一个数n,它的阶乘末尾有Q个零,现在给出Q,问n最小为多少?
解题思路:
由于数字末尾的零等于min(因子2的个数,因子5的个数),又因为2<5,那么假设有一无限大的数n,n=2^x=5^y,可知x<<y。
所以我们可以直接根据因子5的个数,算阶乘末尾的零的个数。1<=Q<=10^8,所以可以用二分快速求解。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define LL long long
LL find_zeros (LL n)
{
LL ans = ;
while (n)
{
ans += n / ;
n /= ;
}
return ans;
}
int main ()
{
LL t, n, l = ;
scanf ("%lld", &t);
while (t --)
{
scanf ("%lld", &n);
LL low, high, mid;
low = ;
high = ;
while (low <= high)
{
mid = (low + high) / ;
LL num = find_zeros(mid);
if (num < n)
low = mid + ;
if (num >= n)//求出来的n要是最小的,所以这里不能直接返回
high = mid - ;
}
if (find_zeros(low) == n)
printf ("Case %lld: %lld\n", l++, low);
else
printf ("Case %lld: impossible\n", l++);
}
return ;
}
最新文章
- 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
- from collections import OrderedDict
- Python 操作 MongoDB
- 20145224&;20145238 《信息安全系统设计基础》 第一次实验
- git 使用钩子直接推送到工作目录
- [转载] TLS协议分析 与 现代加密通信协议设计
- Mplayer 官方中文手册
- Win7 IIS配置 applicationHost.config 错误:无法识别的特性“setProfileEnvironment” 解决方法
- (入门篇 NettyNIO开发指南)第三章-Netty入门应用
- [转]SQL Server 表变量和临时表的区别
- C#学习-接口与抽象类
- JS高程关于ajax的学习笔记
- power designer的安装
- 静态库lib和动态库dll相关总结
- 计时器setInterval()
- KVM libvirt的CPU热添加
- datagrid中reoload提交时如何批量提交表单中的查询条件
- LDa 通俗理解
- CentOS 7 systemd添加自定义系统服务
- 《spring技术内幕》读书笔记(1)——什么是POJO模式