题目描述
也许你早就知道阶乘的含义,N 阶乘是由 1 到 N 相乘而产生,如:
12!=1×2×3×4×5×6×7×8×9×10×11×12=479,001,600
1212 的阶乘最右边的非零位为 6。
写一个程序,计算 N (1≤N≤5×107) 阶乘的最右边的非零位的值。
注意:10,000,000! 的末尾有 2499999 个零。
输入格式
仅一行包含一个正整数 N。
输出格式
一个整数,表示最右边的非零位的值。
输入输出样例
输入 #1复制
12
输出 #1复制
6
思路:1.求出阶乘,发现可以在每一次×i是消零,结果就是无零数。
2.如果发现这位上的数是0,就除掉。
3.保留非0数。
注意:在保留时,一定要保证保留的是所有数。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
long long ans=1;
cin>>n;
for(int i=1;i<=n;i++){
ans=ans*i;
if(ans%10==0) ans=ans/10;
ans=ans%100000000;
}
cout<<ans%10;
return 0;
}