二分练习 --D - Trailing Zeroes (III)
You task is to find minimal natural number N, so that N! contains exactly Q zeroes on the trail in decimal notation. As you know N! = 12…*N. For example, 5! = 120, 120 contains one zero on the trail.
Input
Input starts with an integer T (≤ 10000), denoting the number of test cases.
Each case contains an integer Q (1 ≤ Q ≤ 108) in a line.
Output
For each case, print the case number and N. If no solution is found then print ‘impossible’.
Sample Input
3
1
2
5
Sample Output 089Case 1: 5
Case 2: 10
Case 3: impossible
题意:就是输入一个数,表示一个数末尾零的个数,然后求最小满足这个条件的阶乘!非常好的一个题,考验思维数学等一系列知识,最后又要用到二分查找,真的很nice的一个题!!!我太i了!!!
思路: 阶乘的规律:从2开始(包括2)从右到左第一位必定是2的倍数 (不包含2),所以这些数乘5必定是0。1 ~ 4 没有0、5 ~ 9有 1个零、10 ~ 14 有2个零。15 ~ 19有3个零。所以看出规律,每 出现一次5就会增加一个0;
1.需要注意的是后缀0是由2,5相乘得来,因此只需看有多少个2,5即可 n = 5: 5!的质因子中 (2 * 2 * 2 * 3 * 5)包含一个5和三个2。因而后缀0的个数是1。 n = 11: 11!的质因子中(2^8 * 3^4 * 5^2 * 7)包含两个5和三个2。于是后缀0的个数就是2。
2质因子中2的个数总是大于等于5的个数。因此只要计数5的个数就可以了。
例如: 11中有两个5因此输出2.可用 n/5=2;
3.需要注意的是25中有25,20,15,10,5,但是25又可以分为5*5, 因此需要判断t=n/5后中t中的5的个数。
#include<bits/stdc++.h>
using namespace std;
const int maxw=5e8;
int search(int n)//找出n中5的个数
{
int ans=0;
while(n)
{
ans+=(n/5);//ans为商的累加,即5的个数
n/=5;
}
return ans;
}
int main()
{
int t,n;
cin>>t;
while(t--){
cin>>n;
int head=4,tail=maxw,mid,num;
while(head<=tail){
mid=(head+tail)/2;
num=search(mid);
if(num<n)
head=mid+1;
else
tail=mid-1;
}
num=search(head);
if(num==n)
cout<<"Case "<<i<<": "<<head<<endl;
else
cout<<"Case "<<i<<": impossible"<<endl;
}
return 0;
}
- 最简单的web服务器实现(一)(r4笔记第68天)
- 算法09 五大查找之:哈希查找
- JSP面试题都在这里
- Java基础-07(01).总结private,this,封装,static,成员方法变量,局部变量匿名对象
- HTTP就是这么简单
- 重温二分查找算法(r4笔记第66天)
- 【不用框架】文件上传和下载
- JSP第七篇【简单标签、应用、DynamicAttribute接口】
- Java基础-07(02).总结private,this,封装,static,成员方法变量,局部变量匿名对象
- 通过shell脚本快速定位active session问题(r4笔记第65天)
- 01 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之业务分析与DAO层
- JSP第六篇【自定义标签之传统标签】
- 过滤器监听器面试题都在这里
- 02 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之Service层
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- spring-boot-route(十四)整合Kafka
- laravel 事件/监听器实例代码
- pytorch 多分类问题,计算百分比操作
- spring-boot-route(十五)整合RocketMQ
- spring-boot-route(十六)使用logback生产日志文件
- 你真的知道怎么实现一个延迟队列吗 ?
- 腾讯云容器服务日志采集最佳实践
- 深度剖析Lottie动画原理
- spring-boot-route(十七)使用aop记录操作日志
- spring-boot-route(十八)spring-boot-actuator监控应用
- 浅析PHP7的多进程及实例源码
- spring-boot-route(十九)spring-boot-admin监控服务
- Python scrapy爬取小说代码案例详解
- 解决pip install psycopg2出错问题
- PHP开发的文字水印,缩略图,图片水印实现类与用法示例