题解 P1134 【阶乘问题】
PS:在搜别的题时偶然看到此题,就做了一下下,还挺简单
第四篇题解(你没看错,我还蓝名呢(发布题解时))
此题只要你看懂题意,会写循环,就能做AC
先放一个我第一次写的代码(#1 AC,#2~6TLE(超时),#7MLE(爆空间))
#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<queue>
#include<iomanip>
#include<algorithm>
using namespace std;
long long a,b,c[50000001];
int main()
{
cin>>a;
c[0]=1;
for(int i=1;i<=a;i++)
c[i]=i*c[i-1];
b=c[a];
while(b%10==0)
b=b/10;
cout<<b%10;
return 0;
}
TLEの根源在这儿
while(b%10==0)
b/=10;
大数处理时间极长
大概……超过了30多秒
大吃一惊
MLE我还没找到为啥,欢迎留言
改了40多分钟,测试了一堆数据,改了又改,最终AC了(代码放送时间)
#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<queue>
#include<iomanip>
#include<algorithm>
using namespace std;
long long a,cxk=1;
int main()
{
cin>>a;
for(int i=1;i<=a;i++)
{
cxk*=i;
while(cxk%10==0)
cxk=cxk/10;
cxk%=1000000;
}
cout<<cxk%10;
return 0;
}
每次计算玩一定要取模!!!!!!!!
不然会TLE!!!!!!
拜拜!
cout<<"撤离,向安全区进发!";
cout<<"go back to save zone!";
cout<<"撤离,向信号接收区进发!";