递归余七

f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

Given A, B, and n, you are to calculate the value of f(n).

 

1 <= A, B <= 1000, 1 <= n <= 100,000,000……

 


首先,A+B 余 7 相当于A余7与B余7的和再余7

再次,AB 余 7 相当于A余7与B余7的积再余7 

所以,f(n)就可以化简了。 

需要从小往大了算,凡是和7这个数沾边的,总是规律性很强,可以慢慢找。

那么A与B只可能属于{0...6}的集合,那么枚举所有的<A,B,M>,其中M为循环节

解完了。循环节一出来,只要计算n相对于特定的A和B对M余多少就可以了。

 

这里需要一个小证明:

 

根据抽屉原理,余数类只有七个抽屉,所以,由于f(n)将由两个子状态来决定,每个子状态都对七封闭,则f(n)最多有七七四十九种对应状态,则循环节不大于49。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值