zoukankan      html  css  js  c++  java
  • 最小N使得N!的末尾恰有Q个0——SGU154 Factorial

    给出数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");
    }
    }

  • 相关阅读:
    python爬虫
    RMQ算法
    组合数
    水池数目
    jQuery 拼接事件
    ORACLE
    day 75
    day74 vue框架
    day73 vue框架
    day 72 vue框架
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2021562.html
Copyright © 2011-2022 走看看