**问题: **
N的阶乘写作N!,表示小于等于N的所有正整数的乘积。 阶乘会变大得很快,如13!就必须用32位整数类型来存储,到了70!即使用浮点数也存不下了。 你的任务是找到阶乘最后面的非零位。举个例子:
5!=12345=120,所以5!的最靠后的非零位是2。
7!=1234567=5040,所以最靠后的非零位是4。
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a,b=1,c;
cin>>a;
for(int i=1;i<=a;i++)
{
b=b*i;
while(b%10==0) b=b/10;
}
c=b%10;
cout<<c;
return 0;
}
我直接用了mod计算,但超时了一大半。题解里说“尾数0是由因子2和5产生的,记录因子2的个数,记录因子5的个数。”,我也不知道什么意思。
请同胞们帮帮忙,教一下我吧!栓Q!