3 条题解

  • 0
    @ 2026-4-5 10:50:15
    • 对于 k=0k = 0 的情况,只有当 x=yx = y 时,表达式值为 11,否则为 00,所以和为 2n−12 ^ n - 1。

    • 对于 k=1k = 1 的情况,通过分析二进制位的性质,推导出通项公式为 (n+1)×2n−n−1(n + 1) \times 2 ^ n - n - 1。

    AC code:

    #include <bits/stdc++.h>
    using namespace std;
    const int MOD = 998244353;
    #define ll long long
    
    ll qpow(ll a, ll b, ll mod) {
        ll res = 1;
        while (b) {
            if (b & 1) res = res * a % mod;
            a = a * a % mod, b >>= 1;
        }
        return res;
    }
    
    int main() {
        int T;
        cin >> T;
        while (T--) {
            ll n, k;
            cin >> n >> k;
            if (k == 0) {
                cout << (qpow(2, n, MOD) - 1 + MOD) % MOD << endl;
            } else {
                cout << ((((n % MOD) + 1) % MOD * qpow(2, n, MOD) % MOD) - (n % MOD) - 1 + MOD) % MOD << endl;
            }
        }
        return 0;
    }
    

    信息

    ID
    247
    时间
    1000ms
    内存
    512MiB
    难度
    4
    标签
    递交数
    7
    已通过
    5
    上传者