刚才比赛的T1求解
  • 板块灌水区
  • 楼主fluhang_
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/9/8 12:31
  • 上次更新2024/9/8 16:03:41
查看原帖
刚才比赛的T1求解
1072112
fluhang_楼主2024/9/8 12:31

rt

#include <iostream>  
#include <vector>  
using namespace std;  
  
const int MOD = 998244353;  
  
long long fast_pow(long long base, long long exp, int mod) {  
    long long result = 1;  
    while (exp > 0) {  
        if (exp % 2 == 1) {  
            result = (result * base) % mod;  
        }  
        base = (base * base) % mod;  
        exp /= 2;  
    }  
    return result;  
}  
  
int main() {  
    int n;  
    cin >> n;  
  
    vector<long long> dp(n + 1, 1);
    for (int j = 1; j <= n; ++j) {  
        for (int k = 1; k <= j; ++k) {  
            dp[j] = (dp[j] * fast_pow(k, k, MOD)) % MOD;  
        }  
    }  
  
    long long ans = 1;  
    for (int i = 1; i <= n; ++i) {  
        long long curr_prod = 1;  
        for (int j = 1; j <= i; ++j) {  
            curr_prod = (curr_prod * dp[j]) % MOD;  
        }  
        ans = (ans * curr_prod) % MOD;
    }  
  
    cout << ans << endl;  
  
    return 0;  
}
2024/9/8 12:31
加载中...