原题medium
原题hard
翻译
如果你不会CF1808E1的做法,请点击这里
本题涉及:数据诈骗,这道题可以做到的复杂度
我们发现对于所有数位的和,满足的的种类只有个或个。具体的,当为奇数时,的种类有且只有一个,当为偶数时,若为偶数,则的种类有个,否则无解。因此,我们对分奇偶考虑
我们发现我们不知道值为的位置有多少个,而如果枚举个数的话。正难则反,我们考虑拿总方案数没有一个位置为的方案数
我们发现正好有个位置是的方案数是难求的,但我们可以求出钦定个位置是,且满足的方案数,然后用二项式反演啊
我们设表示钦定个数为,且满足的方案数;同样的,表示恰好个数为,且满足条件的方案数,我们可以得到:
其中计算时的意思是剩下位随便填,而我们只需要让最后一位填他们剩下的数,这样就能保证的限制条件了
这里要注意在时不满足条件,因为我们没有剩下的空位可以保证限制条件的满足,因此,对于时要单独计算,计算方法后面再说
答案即为:
然后我们考虑怎么算,我们发现,我们把带入后化简一下得到,而是一个定值。因此我们可以得到:
这里可能有人有疑问(比如我):为什么对于,满足的个数是。我们考虑求出满足条件的最小的,显然为,而对于中满足条件的的个数即为
带入化简后易得:
最后不要忘记拿减去
首先,我们可以发现为奇数时肯定无解,因此我们只考虑为偶数的情况。此时可能的值有
类似的,我们可以知道:
其中表示枚举这个位置是还是的方案数
类似的推式子,可以得到:
我们考虑如何计算,我们发现有,我们考虑化简式子:
我们发现对于同余号左边的值只有和两种,而是一个定值,因此仅当时,才能取到值,否则
我们通过二项式定理可以知道:
由这两个式子可知,,然后就变成了我们已知的一个问题:
最后不要忘了用总方案数不满足条件的方案数
最终复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?