- 247's solution
-
题解 P247
- @ 2026-4-5 10:50:15
-
对于 的情况,只有当 时,表达式值为 ,否则为 ,所以和为 。
-
对于 的情况,通过分析二进制位的性质,推导出通项公式为 。
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;
}