$\Huge{求改精度}$
查看原帖
$\Huge{求改精度}$
637788
kimi0705楼主2023/8/4 22:22

与样例仅差 0.001\Huge{0.001} 啊

#include <bits/stdc++.h>
using namespace std;
const int N = 10005;
int a, n, q;
bool arr[N];
double ans, dp[2][N]; // 表示前 i 道题,小红做对 j 道的概率。
signed main() {
    cin >> n >> a >> q;
    getchar();
    for (int i = 1; i <= n; i++) arr[i] = getchar() - '0';
    dp[0][0] = 100;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            dp[i & 1][j] = (dp[(i - 1) & 1][j] * (arr[i] ? 100 - a : a) + dp[(i - 1) & 1][j - 1] * (arr[i] ? a : 100 - a)) / 100.0;
        }
    }
    for (int i = q; i <= n; i++) ans += dp[n & 1][i];
    printf("%.3f", ans / 100);
    return 0;
}

2023/8/4 22:22
加载中...