自学内容网 自学内容网

数学期望专题

9.29 - 10.6 更新时间约持续一周

优惠券 Coupons

题目链接:优惠券 Coupons

假设我们某个情况下,我们已经有了 k 种图案,在这个条件下,获得一个新图案需要 t_k 天,那我们要求的就是 \sum_{k = 0}^{n - 1}E(t_k)。由于已经有了 k 种图案,那么获得一个新图案的概率就是 \frac{n - k}{n},那么期望天数 E(t_k) = \frac{n}{n - k},最终答案就是 \sum_{k = 0}^{n - 1}E(t_k) = \sum_{k = 0}^{n - 1}\frac{n}{n - k} = \sum_{i = 1}^{n} \frac{n}{i}

要注意一下分数时候的输出格式。

另外就是这道题我刚开始给卡常了,有点ex。

#include <bits/stdc++.h>
using namespace std;

#define int long long

int n, x, y;

int gcd(int a, int b) { return a == 0 ? b : gcd(b % a, a); }

signed main() {
    while (scanf("%lld", &n) != EOF) {
        x = n, y = 1;
        for (int i = 2; i <= n; i++) {
            x = x * i + y * n, y *= i;
            int GCD = gcd(x, y);
            x /= GCD, y /= GCD;
        }
        if (x % y == 0) printf("%lld\n", x / y);
        else {
            int a = x / y;
            x %= y;
            int lena = log10(a) + 1, leny = log10(y) + 1;
            for (int i = 0; i <= lena; i++) printf(" ");
            printf("%lld\n%lld ", x, a);
            for (int i = 1; i <= leny; i++) printf("-");
            puts("");
            for (int i = 0; i <= lena; i++) printf(" ");
            printf("%lld\n", y);
        }
    }
return 0;
}


原文地址:https://blog.csdn.net/djhws144/article/details/142646096

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!