《如 何 速 通 一 套 题》5.0
1.《如 何 速 通 一 套 题》12.《如 何 速 通 一 套 题》23.《如 何 速 通 一 套 题》34.《如 何 速 通 一 套 题》 4.1
5.《如 何 速 通 一 套 题》5.0
6.《如 何 速 通 一 套 题》5.1bug fixed7.《如 何 速 通 一 套 题》6.08.《如 何 速 通 一 套 题》7.09.《如 何 速 通 一 套 题》8.010.《如 何 速 通 一 套 题》9.011.《如 何 速 通 一 套 题》 10.012.《如 何 速 通 一 套 题》12.013.《如 何 速 通 一 套 题》13.014.《如 何 速 通 一 套 题》14.015.标题,你懂的(15.0)...16.16.0邮寄
开场直接看 A。A 做不出来。
浏览了一下,发现 A 是 sb 题,直接做了。
BCD 全都不会做。
推了好久的 B,想出来了,然后写过了。
CD 一个暴力,一个乱搞,然后撤退。
A 依依寺
死于不开 long long
见祖宗。
#include <bits/stdc++.h> using namespace std; int t, a, b, c, ans; int main() { //freopen("yiyi.in", "r", stdin); //freopen("yiyi.out", "w", stdout); for(cin >> t; t--; ) { cin >> a >> b >> c; ans = 0; if((!b) && (!c)) { cout << "Second" << '\n'; continue; } if(b) { b--; ans |= (b <= c) ^ (a & 1); b++; } if(c) { c--; ans |= (c <= b) ^ (a & 1); c++; } cout << (ans? "First" : "Second") << '\n'; } return 0; }
B 武义寺
考虑每一个
对于取值为
先考虑第一个条件。
记
然后考虑第二个条件。可知
然后就可以直接做了。
#include <bits/stdc++.h> #define int long long using namespace std; const int kMod = 998244353; int n, fac[1000010], ivs[1000010], inv[1000010], pbs[1000010], prb[1000010], ans; int qpow(int x, int y) { int rs = 1; for(; y; y >>= 1) { if(y & 1) { rs = rs * x % kMod; } x = x * x % kMod; } return rs; } int qinv(int x) { return qpow(x, kMod - 2); } void init() { fac[0] = 1; for(int i = 1; i <= 1000000; i++) { fac[i] = fac[i - 1] * i % kMod; } ivs[1000000] = qinv(fac[1000000]); for(int i = 999999; i >= 0; i--) { ivs[i] = ivs[i + 1] * (i + 1) % kMod; } for(int i = 1; i <= 1000000; i++) { inv[i] = ivs[i] * fac[i - 1] % kMod; } } signed main() { //freopen("wuyi.in", "r", stdin); //freopen("wuyi.out", "w", stdout); init(); cin >> n; pbs[0] = 1; for(int i = 1; i <= n; i++) { pbs[i] = qpow(n - i + 1, i) * fac[n - i] % kMod * ivs[n] % kMod; } for(int i = 1; i <= n + 1; i++) { prb[i] = (pbs[i - 1] - pbs[i] + kMod) % kMod; ans = (ans + i * prb[i]) % kMod; } cout << ans << '\n'; return 0; }
C 依久依久
超级大数学。
区间复杂东西的复杂运算,可差分,果断祭出前缀和。
对于
找到
写出来就是:
// 实际写出来的代码短得神奇 #include <bits/stdc++.h> #define int long long using namespace std; int t, l, r, ans, f[114], n; map<int, int> mem; int cal(int x) { if(!x) { return 0; } if(mem.find(x) != mem.end()) { return mem[x]; } int tmp = upper_bound(f + 1, f + n + 1, x) - f - 1; return mem[x] = (cal(f[tmp] - 1) ^ cal(x - f[tmp]) ^ (((x - f[tmp] + 1) & 1) * f[tmp])); } signed main() { freopen("yijiu.in", "r", stdin); freopen("yijiu.out", "w", stdout); f[0] = f[1] = 1; for(n = 2; (f[n] = f[n - 1] + f[n - 2]) <= (int)(1e18); n++) { } for(cin >> t; t--; ) { cin >> l >> r; cout << (cal(r) ^ cal(l - 1)) << '\n'; } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析