这种做法是正确的吗?
最后两个点TLE了
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 998244353;
int n,ans = 1,val = 1,pos = 1;
int ksm(int a,int n)
{
if (n == 0)
return 1;
if (n % 2 == 1)
return ksm(a,n - 1) * a % mod;
int pos = ksm(a,n / 2);
return pos % mod * pos % mod;
}
signed main()
{
cin >> n;
for (int i = n;i >= 1;i--)
{
ans = ans * ksm(ksm(i,i),val) % mod;
pos++;
val += pos;
}
cout << ans << endl;
return 0;
}