• Sequence


    ps:分段矩阵快速幂,因为P范围内只有√P段是不同的。写出的BUG:矩阵讲究左乘和右乘;取模较多可能会T,因为模运算很耗时;除法可能会除到0;只在3 ~ n的范围内分段,注意某段的端点是否大于n。

    int temp[3][3] = {{0, 0, 0}, {1, 0, 0}, {0, 0, 1} };
    node mTemp;
    
    void Inite() {
        mTemp.A[0][0] = D;
        mTemp.A[0][1] = C;
        mTemp.A[0][2] = 0;
        for (int i = 1; i < 3; ++i) {
            for (int j = 0; j < 3; ++j) mTemp.A[i][j] = temp[i][j];
        }
    }
    
    void solve() {
        node ans;
        for (int i = 0; i < 3; ++i) ans.A[i][i] = 1;
       // i 是左端点, y 是右端点
        Inite();
        for (int i = 3, x, y; i <= n; i = y + 1) {
            x = P / i;
            y = (x == 0 ? n : P / x);
            if (y > n) y = n; 
            mTemp.A[0][2] = x;
            ans = Fastpow(mTemp, y - i + 1) * ans;
        }
        ll res = ((ans.A[0][0] * (ll)B) % mod + (ans.A[0][1] * (ll)A) % mod + (ll)ans.A[0][2]) % mod;
        cout << res << endl;
    }
  • 相关阅读:
    Dockerfile命令详解
    LXC与Docker Containers的区别
    CSP-S2019游记
    T3
    %%%%%%%%%%%%%%%%
    神炎皇 数学
    2019.9.27
    征途堆积出友情的永恒「堆优化dp」
    星空[好题][题意转化]
    分组[测试点分支+二分图判定]
  • 原文地址:https://www.cnblogs.com/zgglj-com/p/9473914.html
走看看 - 开发者的网上家园