我不理解。。。
查看原帖
我不理解。。。
567387
TG178X楼主2022/4/10 17:11

为什么我调用函数去掉后缀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;
}

测试点

2022/4/10 17:11
加载中...