#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
ll dp[1000005];
// 第i天为晴天的概率
ll mod =
998244353;
ll mulMod(ll a, ll b)
{
return (a % mod) * (b % mod) %
mod;
}
ll plusMod(ll a, ll b)
{
return (a % mod + b % mod) %
mod;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
ll n, m, p, d, a, b, c;
cin >> n >> m >> p >> d >> a >> b >>
c;
dp[0] =
1;
// 第一天为晴天
ll ans =
0;
ll k = plusMod(mulMod(d, c), mulMod(
1 - d + mod, b));
// 台风天狩猎b和c的期望
// 前m天中第i天是晴天,之前必为晴天
for (
int i =
1; i <= m; i++
) {
dp[i] = mulMod(dp[i -
1],
1 - p +
mod);
ans = plusMod(ans, plusMod(dp[i] * a, (
1 - dp[i] + mod) *
k));
}
for (
int i = m +
1; i <= n; i++
) {
dp[i] = plusMod(mulMod(dp[i -
1],
1 - p + mod), mulMod(dp[i - m -
1], p));
ans = plusMod(ans, plusMod(dp[i] * a, (
1 - dp[i] + mod) *
k));
}
cout << ans <<
endl;
}
转载于:https://www.cnblogs.com/AntonLiu/p/10730612.html
相关资源:C#实现的windows计算器