给出数Q,求出最小的自然数N使得N!的末尾恰有Q个0,无解输出"No solution"

对于一个数n,求出它的末尾有几个0,只需看n之内的数的质因子5的个数,因为2的个数远多于5。所以可知道一个数末尾0的个数
Q = n/5 + n/(5^2) + n/(5^3) + ...

Q = N(5^k - 1) / [4*(5^k)],由此得
N = 4Q * [(5^k)/(5^k-1)]

还有就是注意0不是自然数!

View Code
#include<stdio.h>

int fun(int n)
{
int add=0;
while(n)
{
add
+=n/5;
n
/=5;
}
return add;
}

int main()
{
int n;
scanf(
"%d",&n);
if(n==0)
{
printf(
"1\n");
return 0;
}

int p=n*4/5*5;
while(fun(p)<n)
{
p
+=5;
}

if(fun(p)==n)
{
printf(
"%d\n",p);
}
else
{
printf(
"No solution\n");
}
}

相关文章:

  • 2021-08-09
  • 2021-10-09
  • 2021-10-22
  • 2021-09-11
  • 2022-02-13
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-27
  • 2022-03-10
  • 2021-08-31
  • 2022-12-23
  • 2021-11-01
  • 2021-10-16
相关资源
相似解决方案