题解
2025-09-23 12:21:00
发布于:广东
6阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
const int MOD = 998244353;
long long mod_pow(long long a, long long b, long long mod) {
long long result = 1;
while (b > 0) {
if (b % 2 == 1) {
result = (result * a) % mod;
}
a = (a * a) % mod;
b /= 2;
}
return result;
}
int main() {
int N, P;
cin >> N >> P;
long long inv100 = mod_pow(100, MOD - 2, MOD);
long long p = (1LL * P * inv100) % MOD;
long long q = (1LL * (100 - P) * inv100) % MOD;
vector<long long> dp(N + 1, 0);
for (int i = 1; i <= N; ++i) {
long long res = 1;
if (i - 1 >= 0) {
res = (res + q * dp[i - 1]) % MOD;
}
if (i - 2 >= 0) {
res = (res + p * dp[i - 2]) % MOD;
}
dp[i] = res;
}
cout << dp[N] << endl;
return 0;
}
这里空空如也
有帮助,赞一个