小Q与百货商店(gift)

题目大意:给你一个n,要你从1~2n这2n个整数中选出n个,使得选出的数中偶数的个数是偶数的方案数(mod 1000003)  (n<=10^18)


这题比较神,当时想了两小时就打了个暴力,被虐残了。。。

首先可以知道ans=sigma(C(n,i)*C(n,n-i)) i是小于等于n的非负偶数,就可以变成sigma(C(n,i)^2) i是偶数

这个怎么搞呢,当n是奇数时,有sigma(C(n,i)^2)=C(2n,n) i是非负整数  sigma(C(n,i)^2)=2*sigma(C(n,k)^2)  k是偶数 所以ans=C(2n,n)/2

当n是偶数时:

设n=2k

G1(n)=(1+x)^n=C(n,0)+C(n,1)x+C(n,2)x^2+...+C(n,n)x^n

G2(n)=(1-x)^n=C(n,0)-C(n,1)x+C(n,2)x^2+...+C(n,n)x^n

[[G1(n)+G2(n)]/2]^2=[C(n,0)+C(n,2)x^2+...+C(n,n)x^n]^2

显然右边这个东西里x^n的系数为sigma(C(n,i)*C(n,n-i))=sigma(C(n,i)^2)  i是偶数,这个即为ans

所以[[G1(n)+G2(n)]/2]^2中x^n项系数就OK了

[[G1(n)+G2(n)]/2]^2=((1+x)^n-(1-x)^n)^2/4=[(1+x)^(2n)+(1-x)^(2n)+2(1-x^2)^n]/4

系数为[C(2n,n)+C(n,k)*(-1)^k]/2于是ans就出来了


至于这种C(a,b)%p的,因为p是质数,可以用lucas定理,就解决了





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值