原题连接:原题链接
题目大意:给定一个数n,求最小的N,使得N!末尾有n个0;
解题思路:有几个0,即看能分解出来几个5,所以用二分法查找能分解出来的5的个数。
代码部分:
#include<stdio.h>
int searchs(long long mid)
{
int number=0;
while(mid)
{
number+=mid/5;
mid=mid/5;
}
return number;
}
int main()
{
int n;
scanf("%d",&n);
long long left=1,right=500000000,mid=0;
while(left<=right)
{
mid=(left+right)/2;
if(searchs(mid)<n)
{
left=mid+1;
}else
{
right=mid-1;
}
}
if(searchs(left)==n)
printf("%d\n",left);
else
printf("No solution\n");
return 0;
}
如有错误/优化,欢迎评论区留言。
努力努力再努力x