easy 个屁啊,一点都不easy,题目就是要求公式的值,但是要求公式在最后的取模前的值向上取整,再取模,无脑的先试了快速幂 double fmod来做,结果发现是有问题的,这题要做肯定得凑整数,凑整 题目给 a+√b 那么加上a-√b就可以了,可是这样加上后面怎么处理还得减去,想了半年也想不出来,
原来用了负数的共轭思想,还有就是题目给的b的范围 是 ((a-1)*(a-1),a*a),所以 a-√b的值的 无论多少次方 的值都是小于1的,所以对于原式子 改装成
((a + √b) ^n+ (a - √b)^n)%MOD,这样因为(a + √b) ^n的值在取模前要向上取整么,所以加上了 (a - √b)^n 就是 答案了,特别变态,还得看b的范围来行事
最后在用 (a + √b) ^n+ (a - √b)^n 乘以 (a + √b)+ (a - √b)就能推出 (a + √b) ^(n+1) + (a - √b) ^(n+1) = 2 * a *((a + √b) ^n + (a - √b) ^n) - (a*a-b)*((a + √b) ^(n-1) + (a - √b) ^(n-1))
这样字的话 就有递推式可言了,就能构造矩阵来做了,最后还漏了负数的情况 ,搞的我敲了好几个小时,数学弱爆了,
#include
#include
#include
#include
#include
#include
#include
#include
#include