10000!的最后一个非0位是几?
来自CSDN的解答
对于这问题,我想算到1000000都问题,绝对能在一秒中出结果.大致算法如下:
int Five(int N)
{
int sum=0;
int temp=5;
while(temp<=N)
{
sum+=N/temp;
temp*=5;
}
return sum;
}
2.用同样的算法算出该阶乘含2因子的指数T.
3.用下面的代码,算出最后的结果.
代码1:
//对数据进行处理.//
int Process(int n)
{
while(n%2==0) n/=2;
while(n%5==0) n/=5;
return n;
}
代码2:
//算出最后所需要的结果,//
int Result(int N)
{
int result=1;
for(int i=2;i<=N;i++)
{
result=result*Process(i);
result%=10;
}
int temp=T-F;//F,T的含义如上面所诉.
if(temp==0) return result;
temp%=4;
if(temp==0) return (result*6%10);
if(temp==1) return (result*2%10);
if(temp==2) return (result*4%10);
if(temp==3) return (result*8%10);
}
对于这道题,很容易让人犯一个错误,如半桶水,他就犯了这样的错误.他给出的算法是错误的.用一个稍大点的数,就会出错.如25,125这类的数.这其实是一道数学题,没啥可多说的了.

收藏: 























