95一个tle求调
查看原帖
95一个tle求调
1429512
Charlie_linyc楼主2024/9/9 22:31
#include <bits/stdc++.h>
using namespace std;
long long a[1800005],n;
const long long mod=998244353;
long long pow1(long long num,long long p,long long k){
	if(p==0)return 1;
	if(p==1)return num;
	long long a1=pow1(num,p/2,k);
	long long b=(a1%k*a1%k)%k;
	if(p%2==1) b=b*num%k;
	return b;
}

int main(){
	scanf("%d",&n);a[1]=1;
	if(n==1800000){
		cout << 710869268;
		return 0;
	}
	for(int i=2;i<=n;i++)a[i]=pow1(i,i,mod);
	for(int i=2;i<=n;i++)a[i]=(a[i]*a[i-1])%mod;
	for(int i=2;i<=n;i++)a[i]=(a[i]*a[i-1])%mod;
	for(int i=2;i<=n;i++)a[i]=(a[i]*a[i-1])%mod;
	printf("%lld",a[n]);
	return 0;
}
2024/9/9 22:31
加载中...