hackerrank infinitum10 Fun with 1010

题目大意

给定 N,M ,求出

i=1Mj=1i(Nj)3mod2000003

数据范围

1NM1012

题解

首先,对于 i>N 的情况,显然他们的和就等于 (MN)(2N1)3 ,那么接下来就考虑怎么求

i=0Nj=1i(Nj)3=i=0Nj=0i(Nj)13=i=0Nj=0i(Nj)33j=0i(Nj)2+3j=0i(Nj)1


Ai=ij=0(Nj)
S1=Ni=0Ai
S2=Ni=0A2i
S3=Ni=0A3i

只需要把这三个东西求出来就好了。

另外设 P1=A0AN1+A1AN2++AN1A0 ,先考虑怎么把 P1 求出来。

P1=A0An1++An1A0=[(n0)]×[(n1)++(nn)]+[(n0)+(n1)]×[(n2)++(nn)]    ++[(n1)++(nn1)]×[(nn)]=j<k(nj)(nk)(kj)=r=1nrkj=r(nj)(nk){[xr]((1+1x)n(1+x)n)}=r=1nr(2nn+r)=r=1nr(2nnr)=nr=1n(2nnr)r=1n(nr)(2nnr)=n×[22n(2nn)]22n×[22n12(2n1n1)]2=n(2nn)2

求出 P1 后问题就简单很多了,我们逐个来求 S1,S2,S3

S1S2S3=i=0nAi=(A0+An1)+(A2+An2)++(An1+A0)2+An=n2n1+2n=(n+2)2n1=i=0nA2i=A0(2nAn1)++An1(2nA0)+A2n=2n(A0++An)(A0An1++An1A0)=2nS1P1=i=0nA3i=A30+A3n1+A31+A3n2++A3n1+A302+A3n=(A0+An1)(A20A0An1+A2n1)+2+A3n=2n(A20+A21++A2n)2n1P1=2nS2P1

然后这题求完这些东西后就做完啦。求组合数时用lucas即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值