20分求助 感谢大神
查看原帖
20分求助 感谢大神
364807
刘智文楼主2022/11/5 17:53
#include <bits/stdc++.h>
long long mod = 998244353;
long long arr[3005][3005];
typedef long long ll;
long long S(long long A,long long B){
    memset(arr,0,sizeof(arr));
    arr[1][1] = 1;
    for(int i = 2; i <= A; i++){
        for(int j = 1; j <= i; j++){
            arr[i][j] = arr[i - 1][j - 1] + j * arr[i - 1][j];	
            if(arr[i][j] > mod) arr[i][j] %= mod;
        }
    }
    return arr[A][B];
}
long long Pow_jc(int i,int a){
	long long ans = S(i,a) % mod;
	if (ans == 0){
		return 0;
	}
	for (int i = 1; i <= a; i++){
		ans *= 2;
		if (ans >= mod){
			ans = ans % mod;
		}
		ans *= i;
		if (ans >= mod){
			ans = ans % mod;
		}
	}
	return ans;
}
ll f(ll n){
	ll ans = 1;
	for(ll i = 1; i <= n; i++){
		for(ll j = 0; j <= i; j++){
			ans += Pow_jc(i,j);
			if (ans >= mod){
				ans = ans % mod;
			}
		}
	}
	return ans;
}
int main(){
    ll n;
    scanf("%lld",&n);
    printf("%lld",f(n));
    return 0;
}
2022/11/5 17:53
加载中...