数论 - 例题

巨大的菲波那切数列
输入数a,b,n(0 <= a,b <= 264,1 <= n <= 1000),求f(ab)%n,f(num) = f(num-1)+f(num-2),f(0)=f(1)=1。求f(ab)%n。

思路:等价于求 (f(ab - 1)%n + f(ab - 2)%n)%n,而观察一下n较小,那么最多也就n种余数。
那么f(num)有几种组合呢?看似只有n种,因为只有n个余数,但是这样的话我们就要看他的排列问题了,这样又会无解。

但是f(num) = f(num-1) (n种)+ f(num-2) (n种),其实是n2种组合,只是结果有些重复罢了。这样的话,我们知道了f(num)有n2种可能,所以最多n2次就会出现重复的规律(也就是循环节)。

那么我们直接暴力求出前n2个菲波那切数列的数,然后利用循环节去匹配这个数为n2中的哪一项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值