AcWing 1381. 阶乘
题意:
给你一个 n ! n! n!的数,求在10进制下最右边非零数字。
思路:
阶乘分解,由于末尾零的产生,会和2和5有关,所以处理时,先把2和5拿出来。
最后再放回去。
AC
# include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
int n;
cin>>n;
int d2,d5;
d2 = d5= 0;
int res = 1;
for(int i = 1; i <= n; i ++ ){
res = res*i;
while(res%2==0)res/=2,d2++;
while(res%5==0)res/=5,d5++;
res %= 10;
}
for(int i = 1; i <= d2-d5; i ++ )res = res*2%10;
cout<<res<<endl;
return 0;
}
AC(暴力)
# include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int ans= 1;
for(int i = 1; i <= n; i ++ ){
while(ans%10==0)ans/=10;
ans%=1000;
ans=ans*i;
}
while(ans%10 == 0) ans/=10;
cout<<ans%10<<endl;
return 0;
}