Lightoj 1138【二分 + 求 N! 的后导零个数】
2017-07-18 20:45
344 查看
怎么对于N求有多少后导零???
因为每间隔 5 个数有一个数可以被 5 整除, 然后在这些可被 5 整除的数中, 每间隔 5 个数又有一个可以被 25 整除……一直到0
然后知道了这个就可以直接二分求值;
二分类型:0000011111111
1: 代表num(x)>=num(mid)
因为每间隔 5 个数有一个数可以被 5 整除, 然后在这些可被 5 整除的数中, 每间隔 5 个数又有一个可以被 25 整除……一直到0
然后知道了这个就可以直接二分求值;
二分类型:0000011111111
1: 代表num(x)>=num(mid)
#include<bits/stdc++.h> using namespace std; typedef long long LL; int Judge(int n){ int ans = 0; while(n){ ans += n/5; n = n/5; } return ans; } int main(){ int T, cas=1, n, num; scanf("%d", &T); while(T--){ scanf("%d" ,&n); int Left = 1, Right = 5e8; while(Left < Right){ int Mid = Left + (Right - Left) / 2; if(Judge(Mid) >= n) Right = Mid; else Left = Mid + 1; } printf("Case %d: ", cas++); num = Judge(Left); if(num == n) printf("%d\n", Left); else puts("impossible"); } return 0; }
相关文章推荐
- LightOJ 1138 - Trailing Zeroes (III)(二分&阶乘末尾0的个数)
- LightOJ-1138 Trailing Zeroes (III) (二分搜索)
- LightOJ 1138 - Trailing Zeroes (III)【二分】
- lightoj-1138-Trailing Zeroes (III) -二分查找
- LightOJ 1138 二分
- LightOJ 1138 Trailing Zeroes (二分+阶乘分解+思维)
- LightOJ1028 1090 1138 Trailing Zeroes (I)(Ⅱ)(Ⅲ)[算数基本定理/打表/打表+二分]
- LightOJ _1138(二分查找)
- LightOJ 1138(求末尾零个数) 二分+数学
- 【lightoj 1138】Trailing Zeroes (III) (二分)
- LightOJ 1138 Trailing Zeroes (III)(二分)
- 【二分 && 唯一分解定理】LightOJ - 1138 Trailing Zeroes (III)
- LightOJ - 1138 Trailing Zeroes (III) (二分+阶乘分解)
- lightoj 1138 (二分)
- LightOJ-1138 Trailing Zeroes (III) (二分搜索)
- lightoj 1138 - Trailing Zeroes (III)【二分】
- 【LightOJ】1138---Trailing Zeros(二分)
- LightOj 1138 - Trailing Zeroes (III) 阶乘末尾0的个数 & 二分
- [规律,二分] lightoj 1138
- LightOJ 1138Trailing Zeroes (III)(二分)