1 条题解

  • 0
    @ 2025-4-2 11:14:06
    • 化简公式 h(s)=01(tipilog2(pi))h(s) = -\sum_0^1{(t_i*p_i*log_2(p_i))},枚举 0 的数量 t0t_0,判断是否合法
    • 答案:11027421

    关于 loglog的求法:库中给出了

    log(x);   // 以常数 e为底
    log10(x); // 以 10为底
    log2(x);  // 以 2为底
    

    如果要求以 a 为底 b的对数:loga(b)log_{a}(b), 可以利用:$log_{a}(b)= \frac{log_c(b)}{log_c(a)} =log(b)/log(a)$。

    C++参考手册:https://zh.cppreference.com/w/cpp/numeric/math

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 1e6 + 10, INF = 0x3f3f3f3f;
    
    int main() {
        int n = 23333333;
        double P = 11625907.5798;
        for (int x = 0; x < n / 2; x++) {
            double t0 = x, t1 = n - x;
            double p0 = t0 / n, p1 = t1 / n;
            double s0 = -t0 * p0 * log2(p0);
            double s1 = -t1 * p1 * log2(p1);
            if (abs(s0 + s1 - P) < 1e-4) {
                cout << x << endl, exit(0);
            }
        }
        return 0;
    }
    
    • 1

    信息

    ID
    2024
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    4
    已通过
    3
    上传者