60pts,TLE啊!!!!
查看原帖
60pts,TLE啊!!!!
658786
STUDENT00楼主2022/8/31 12:14
#include<bits/stdc++.h>
#define int long long
#define mod 100000007
using namespace std;
int n,s,ans=1;
bool noPM[100000010]; 
int qpow(int a,int b){
	if(b==0) return 1;
	if(b==1) return a%mod;
	int p=qpow(a,b>>1);
	if(b&1) return p*p%mod*a%mod;
	else return p*p%mod;
}
main(){
	scanf("%lld",&n);
	for(int i=2;i*i<=n;i++){
		if(!noPM[i]){
			for(int j=i*i;j<=n;j+=i) noPM[j]=1;
		}
	}
	for(int i=n;i>=2;i--){
		if(!noPM[i]){
			int p=qpow(i,s);
			while(p*i<=n){
				p*=i;
				s++;
			}
			ans=ans*p%mod;
		}
	}
	printf("%lld",ans);
	return 0;
}
2022/8/31 12:14
加载中...