题目链接:[USACO3.2] 阶乘问题 - 洛谷
题目难度:普及/提高-
涉及知识点:阶乘,取模
题意:
输入样例:12
输出样例:6
分析:先计算n的阶乘,再判断,最后输出
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
long long sum=1;//赋初始值
ios::sync_with_stdio(false);//加快cin,cout
cin>>a;
for(int i=1; i<=a; i++)
{
sum*=i;//计算阶乘
while(sum%10==0)//最后一位==0时运行while
{
sum/=10;//防止超时
}
sum%=1000000000;/*只是%10会wrong,有的时候两位数及以上的数相乘取模会多出a1(最高位后全是
0)的形势*a2,波及后一位,所以保留的要适当。*/
//注意:0太多wrong,太少也wrong,一个个测试点试出来的最佳个数
}
cout<<sum%10;//输出非0最后一位
return 0;
}
总结:先计算n的阶乘,再判断,最后输出