- 247's solution
-
P247's Solution
- @ 2026-4-4 23:22:15
观察到 时答案为 , 时答案为 。使用快速幂即可,时间复杂度 。
进一步地,可以把指数对 取模后先做光速幂,时间复杂度 。
#include <bits/stdc++.h>
using namespace std;
long long p[32];
const int P = 998244353;
long long power(int x, long long y)
{
y %= P - 1;
long long ans = 1;
for (int i = 29; i >= 0; i--)
if (y & (1 << i)) ans = ans * p[i] % P;
return ans;
}
int main()
{
ios::sync_with_stdio(0);
p[0] = 2;
for (int i = 1; i <= 30; i++)
p[i] = p[i - 1] * p[i - 1] % P;
int T;
cin >> T;
while (T--)
{
long long n, k;
cin >> n >> k;
if (k == 0) cout << power(2, n) - 1 << '\n';
if (k == 1) cout << (n + 1) % P * (power(2, n) - 1) % P << '\n';
}
return 0;
}