洛谷P5159 WD与矩阵

基本上是打表找规律……

下面第(m)列第(n)行表示(ans(n, m))

如果图片挂了请联系U108185

很明显的等比数列吧……第(n)行的公比为(2^{n-1})

然后用 小学奥数/高中数学 的公式可以求得(ans(n, m)=2^{(i-1)^{(j-1)}})(是两个次方呐!)

这就可以求咯~本人写的快速幂(防溢出)

#include <bits/stdc++.h>

using namespace std;

const long long mod = 998244353LL;

long long qpow(long long a, long long k) {
    long long w = 1;
    while(k) {
        if(k & 1) {
            w *= a;
            w %= mod;
        }
        k >>= 1;
        a *= a;
        a %= mod;
    }
    return w % mod;
}

int main() {
    long long t, a, b;
    cin >> t;
    while(t--) {
        cin >> a >> b;
        // cout << a << " " << b << " ";
        cout << qpow(qpow(2, a - 1), b - 1) % mod << endl;
    }
    return 0;
}

三年OI一场空,不开long long见祖宗

原文地址:https://www.cnblogs.com/iycc/p/10216977.html