题目描述
求N!从右边往左边数第一个不为0的数字
题意: 去后导0;
去后导0就是求N!是10的多少次方的倍数, 就是求有多少个10, 分解下来就是求2,5的个数, 去掉2和5然后再乘回来多的2或5;
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int ans=1, a=0, b=0;
for(int i=1; i<=n; i++)
{
int x=i;
while(x%2==0) x/=2, a++;
while(x%5==0) x/=5, b++;
ans=ans*x%10;
}
int k=min(a,b);
for(int i=0; i<a-k; i++)ans=ans*2%10;
for(int i=0; i<b-k; i++)ans=ans*5%10;
cout<<ans<<endl;
return 0;
}