题目传送门:
P1134 [USACO3.2] 阶乘问题
29分代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
unsigned long long s=1;
for(int i=1;i<=n;i++)
{
s*=i;
while(s>10)
{
if(s%10==0) s/=10;
else s=s%10;
}
}
cout<<s%10<<endl;
return 0;
}
(不信你看)
70分代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
unsigned long long s=1;
for(int i=1;i<=n;i++)
{
s*=i;
while(s%10==0) s/=10;
s=s%100000;
}
cout<<s%10<<endl;
return 0;
}
就是因为 s=s%10000 保留的位数太少了
100分代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
unsigned long long s=1;
for(int i=1;i<=n;i++)
{
s*=i;
while(s%10==0) s/=10;
s=s%100000000;
}
cout<<s%10<<endl;
return 0;
}
(看懂了再抄)