文章标题

来源:互联网 发布:淘宝淘积木 编辑:程序博客网 时间:2024/06/06 19:01

阶乘的0

时间限制:3000 ms | 内存限制:65535 KB

难度:3

描述 计算n!的十进制表示最后有多少个0
输入第一行输入一个整数N表示测试数据的组数(1<=N<=100)
每组测试数据占一行,都只有一个整数M(0<=M<=10000000)输出输出M的阶乘的十进制表示中最后0的个数
比如5!=120则最后的0的个数为1样例输入6
3
60
100
1024
23456
8735373
样例输出0
14
24
253
5861
2183837

#include<stdio.h>int main(){    int n;    scanf("%d",&n);    while(n--)    {        int m;        int c=0;        scanf("%d",&m);        if(m<5)            printf("0\n");        else        {            while(m>=5)            {                c+=m/5;                m/=5;            }            printf("%d\n",c);        }    }    return 0;}

需要用数学规律总结才能很高效地写出代码,大神的思路:
(1)当n<5时,n!=0
(2)当n>=5时,有 f(N!) = k + f(k!), 其中k = N / 5;
例如:f(100!)=20+f(20!)=20+(4+f(4!))=24

此题属于经典题型,做多了就知道这个结论了!!!

原创粉丝点击