求N!总共有多少个零

来源:百度知道 编辑:UC知道 时间:2024/05/24 21:29:24
求N!总共有多少个零
不是末尾有多少个零~~大家别搞错`~网上现在只有末尾有几个零的算法~~我要编程解决这个问题~~可没有好点的算法也不行呀~~求好点的算法~~只要能讲出算法就行`~不一定要程序~~能解决的我给高分
N趋向1000所以N非常大~~有什么办法吗~~我知道79!已经可以达到10^116次方了~~所以早就超过int型和long什么的~~~总不可能先算出来在统计吧~~这样肯定超时~

1 “N!”是指N的阶乘 。
2意思是用比给定数值(必定大于等于零)小的自然数依次相乘直到最终因数为给定数值为止
3所以只有一个零

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define N (100000)

int overturn(char*ch)
{
int i=0;
int temp = 0;
int len = strlen(ch);
for(i=0;i<len/2;i++)
{
temp = ch[i];
ch[i] = ch[len-i-1];
ch[len-i-1] = temp;
}
return 1;
}

int product(char*a,char*b,char*c)
{
int i=0,j=0,m=1;
int lena = strlen(a),lenb =strlen(b) ,temp;
overturn(a);
overturn(b);
for(i=0;i<lena;i++)
{
for(j=0;j<lenb;j++)
{
int sum = c[i+j] + (a[i]-'0')*(b[j]-'0');
m=1;
c[i+j] = sum%10;
c[i+j+m] += sum/10;
while(c[i+j+m]>9)
{
c[i+j+m+1] += c[i+j+m]/10;
c[i+j+m] %= 10;
m++;
}
}
}
for(temp=N-1;temp>=0;temp--)