zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    android作业10.21
    安卓10.7作业
    安卓9.30
    9.23作业
    9.17安卓作业
    6.12作业
    5.29作业
    5.28上机作业
    leetcode 219
    策略模式
  • 原文地址:https://www.cnblogs.com/zgglj-com/p/9473914.html
Copyright © 2011-2022 走看看