CF1808E2&3 Minibuses on Venus

原题medium

原题hard

翻译


如果你不会CF1808E1的O(nK3)做法,请点击这里

本题涉及:数据诈骗,这道题可以做到O(logn+logK)的复杂度

我们发现对于所有数位的和S,满足2xS(modK)x的种类只有1个或2个。具体的,当K为奇数时,x的种类有且只有一个,当K为偶数时,若S为偶数,则x的种类有2个,否则无解。因此,我们对K分奇偶考虑

  • K为奇数时:

我们发现我们不知道值为x的位置有多少个,而如果枚举个数的话n1018。正难则反,我们考虑拿总方案数没有一个位置为x的方案数

我们发现正好有i个位置是x的方案数是难求的,但我们可以求出钦定i个位置是x,且满足2xS(modK)的方案数,然后用二项式反演

我们设fs(i)表示钦定i个数为x,且满足2xS(modK)的方案数;同样的,gs(i)表示恰好i个数为x,且满足条件的方案数,我们可以得到:

(1)fs(i)=(ni)Kni1     (i<n)(2)gs(i)=j=in(1)ji(ji)fs(j)

其中计算fs(i)Kni1的意思是剩下ni1位随便填,而我们只需要让最后一位填他们剩下的数,这样就能保证2xS(modK)的限制条件了

这里要注意fs(i)i=n时不满足条件,因为我们没有剩下的空位可以保证限制条件的满足,因此,对于i=n时要单独计算,计算方法后面再说

答案即为:

(3)s=0K1gs(0)=s=0K1j=0n(1)jfs(j)(4)=s=0K1j=0n1(1)jfs(j)+(1)nfs(n)(5)=s=0K1(j=0n1(1)j(nj)Knj1+(1)nfs(n))(6)=s=0K1(j=0n1(1)j(nj)KnjK+(1)nfs(n))(7)=s=0K1(j=0n(1)j(nj)Knj(1)nK+(1)nfs(n))(8)=s=0K1((K1)n(1)nK+(1)nfs(n))(9)=(K1)n(1)n+(1)ns=0K1fs(n)

然后我们考虑fs(n)怎么算,我们发现fs(n)=[nxS(modK)],我们把2xS带入后化简一下得到fs(n)=[S(n2)0(modK)],而S(n2)是一个定值。因此我们可以得到:s=0K1fs(n)=gcd(n2,K)

这里可能有人有疑问(比如我):为什么对于a,b,满足ax0(modb)的个数是gcd(a,b)。我们考虑求出满足条件的最小的x,显然为lcm(a,b)a=bgcd(a,b),而对于0x<b中满足条件的x的个数即为bx=gcd(a,b)

带入化简后易得:ans=(K1)n(1)n+(1)ngcd(n2,K)

最后不要忘记拿Kn减去ans


  • K为偶数时:

首先,我们可以发现S为奇数时肯定无解,因此我们只考虑S为偶数的情况。此时可能的x值有x1=S2,x2=S+K2

类似的,我们可以知道:

(10)fs(i)=(ni)2iKni1     (i<n)(11)gs(i)=j=in(1)ji(ji)fs(j)

其中2i表示枚举这i个位置是x1还是x2的方案数

类似的推式子,可以得到:

(12)s=0,2|sK1gs(0)= ......(13)=s=0,2|sK1((K2)n(2)nK+(1)nfs(n))(14)=(K2)n(2)n2+(1)ns=0,2|sK1fs(n)

我们考虑如何计算fs(n),我们发现有fs(n)=j=0n(nj)[x2j+x1(nj)S(modK)],我们考虑化简式子:

(15)fs(n)=j=0n(nj)[x2j+x1(nj)S(modK)](16)=j=0n(nj)[S+K2j+S2(nj)S(modK)](17)=j=0n(nj)[K2jS2(2n)(modK)]

我们发现对于同余号左边K2jmodK的值只有0K2两种,而S2(2n)是一个定值,因此仅当S(2n)0(modK2)时,fs(n)才能取到值,否则fs(n)=0

我们通过二项式定理可以知道:

(18)(11)n=i=0n(1)i(ni)(19)0=i=0n(1)i(ni)(20)i=0,2|in(ni)=i=1,2in(ni)

(21)(1+1)n=i=0n(ni)(22)i=0n(ni)=2n

由这两个式子可知,fs(n)=2n1[S(2n)0(modK2)],然后就变成了我们已知的一个问题:

(23)s=0,2|sK1fs(n)=s=0,2|sK12n1[S(2n)0(modK2)](24)=2n1s=0,2|sK1[S(2n)0(modK2)](25)=2n1s=0K1[S(2n)0(modK2)](26)=2n1gcd(n2,K)

最后不要忘了用总方案数Kn2不满足条件的方案数

最终复杂度O(logn+logK)

posted @   FOX_konata  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示