P10118 『STA - R4』And
P10118 『STA - R4』And
题意:给定 A,B,求
- x < y
- x + y = A
- x & y = B
对于加运算和与运算,有 x + y = 2(x & y) + (x ^ y)。
那么令 C = x ^ y = A - 2B。
这里判断下无解情况,
- C < 0, 显然无解。
- C ^ B != 0,与位运算性质矛盾,无解。
因为 x & y = B,所以 B 为 1 的位置 x,y 也为 1。
现在只需讨论 C 中的 1 如何分配。
- 最高位的 1 一定给 y。
- 将合法方案的非最高位取反后仍是合法的。
如
x = 0 _ 1 1 0 0 _ _,y = 1 _ 0 0 1 1 _ _
x'= 0 _ 0 0 1 1 _ _,y'= 1 _ 1 1 0 0 _ _
_ 为 B 的部分
因此非最高位的贡献一定会被消去。
设 C 的最高位是 i,
答案为方案数乘上
void solve() {
ll A, B; cin >> A >> B;
ll C = A - 2 * B;
if(C <= 0 || (B & C)) cout << "0\n";
else cout << ((1ll << __popcount(C) - 1) % P) * ((1ll << 63 - __builtin_clzll(C)) % P) % P << '\n';
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端