社区讨论
71
P13831 【MX-X18-T3】「FAOI-R6」比亚多西参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjcyla9
- 此快照首次捕获于
- 2025/11/04 00:32 4 个月前
- 此快照最后确认于
- 2025/11/04 00:32 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 998244353;
map<ll, ll> memo_F, memo_S;
ll F(ll n) {
if (n == 0) return 0;
if (n == 1) return 1;
if (memo_F.find(n) != memo_F.end()) return memo_F[n];
ll m1 = (n - 1) / 2;
ll m2 = n / 2;
ll res = (n % MOD + F(m1) + F(m2)) % MOD;
memo_F[n] = res;
return res;
}
ll S(ll n) {
if (n == 0) return 0;
if (memo_S.find(n) != memo_S.end()) return memo_S[n];
if (n == 1) return 1;
ll m = n / 2;
ll res;
if (n % 2 == 0) {
ll part1 = (m % MOD) * ((2 * m + 1) % MOD) % MOD;
ll part2 = 4 * S(m) % MOD;
ll part3 = 3 * F(m) % MOD;
res = (part1 + part2 - part3) % MOD;
} else {
ll part1 = ((2 * m + 1) % MOD) * ((m + 1) % MOD) % MOD;
ll part2 = 4 * S(m) % MOD;
ll part3 = F(m) % MOD;
res = (part1 + part2 - part3) % MOD;
}
if (res < 0) res += MOD;
memo_S[n] = res;
return res;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int T;
cin >> T;
while (T--) {
ll L, R;
cin >> L >> R;
ll ans = (S(R) - S(L - 1)) % MOD;
if (ans < 0) ans += MOD;
cout << ans << '\n';
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...