输入p,l,r,k
1<=l<r<=10^12
给出fibonacci数列f[l],...,f[r]这一段,要从中拿出k个数,使得这k个数的gcd最大,输出ans%p
思路:
有(fib[i],fib[j]) = fib[(i,j)]
则(fib[i],fib[j],fib[k]) = fib[(i,j,k)]
由于fib数列递增,
实际上是要找最大的x,使得[l,r]中x的倍数>=k个,
即:r / x - (l - 1) / x >= k
枚举x,一段一段枚举,O(sqrt(r))级别
找到最大的x,再矩阵快速幂求fib[x] % p
p有可能是1,所以即使fib[x] = 1,也要输出fib[x] % p