CF1770F 题解
前置知识 :范德蒙德卷积推广。
即 。这里给一个组合意义的证明。
相当于在 个物品中选 个的方案数, 相当于枚举对于每 各选了几个,且满足总和为 。于是 所表示的组合意义的值是一样的。
前置知识 : 定理,大家可以看这个学习。
定理: 等于 在 进制表示下进位的次数,其中 为素数。
这题用到当 时,此时 等于 是否进位,所以 ,其中 是在二进制意义下。
这题考虑条件具有很强的对称性,所以当 为偶数时 会一一对应消掉,所以答案为 。
,
若 为奇数时,考虑对答案拆位,目前做到了 ,且 ,这时候可以钦定 的第 位为 ,由于 的性质且 为奇数于是答案不会发生变化。下面把 减去 。
这时我们要统计 被计算次数的奇偶性(设为 )。考虑 值为 比较困难,考虑容斥。
令 表示 值 时 被计算次数,则 。
这样枚举 的复杂度就是 了,我们只需快速计算 即可。
于是 可以 计算,总复杂度 。
#include<bits/stdc++.h>
#define LL long long
#define fr(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);
using namespace std;
LL n,x,y,ans;
inline bool in(LL x,LL y){return (x&y)==x;}
int main()
{
scanf("%lld%lld%lld",&n,&x,&y);if(n&1^1) return 0*puts("0");LL s=1;
for(int i=0;i<20;i++,s<<=1) for(int j=0;j<=y;j++) if(in(j,y)&&(j&s)) ans^=s*in(x-s,n*j-s);printf("%lld",ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】