巨大的菲波那切数列
输入数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中的哪一项