为什么我调用函数去掉后缀0的时候会TLE,但是在main函数里用while除就不会?
代码1:
#include<bits/stdc++.h>
using namespace std;
long long mod(long long x){
long long ans=1;
while(x%ans==0) ans*=10;
ans/=10;
return ans;
}
int main(){
long long ans=1;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
ans*=i;
long long tmp=mod(ans);
ans%=tmp*10000000;
ans/=tmp;
}
printf("%d\n",ans%10);
return 0;
}
测试点
代码2:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long ans=1;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
ans*=i;
while(ans%10==0) ans/=10;
ans%=10000000;
}
printf("%lld\n",ans%10);
return 0;
}
测试点