a+b*sqrt(c)取整取模

反正我就自己记一记,

首先构造An+sqrt(c)*Bn和An-sqrt(c)*Bn,

然后随便证明一下得到要求的向下取整的值为2*An-1,这里是针对这个题,不同情况可以参考这样随机应变一下,大概

An和Bn可以通过矩阵乘法递推得到

因为指数太大必须找循环节,这里模一个最大4W多的质数,据说这个数据范围可以直接暴力一个一个算判断指数到多少会变成单位矩阵,这个就是循环节了

再据说就是,根据群论的知识这里可以保证mod*(mod-1)*(mod^2-1)是一个循环节,数据范围也保证了这个是在LL范围内的,于是指数就可以直接模这个了,这样还要再注意一下LL*LL%LL的溢出

但是其实这里用(mod-1)*(mod+1)也是可以过的,这样还不用处理溢出,快多了

反正就是总结一下几个可以模的东西,记所模质数为P

  1. P-1
  2. (P-1)*(P+1)
  3. P*(P-1)*(P+1)
  4. P*(P-1)*(P+1)*(P-1)
有什么问题一个一个试就好了,最下面那个有办法处理的话当然直接用是最保险了。


你可能感兴趣的:(a+b*sqrt(c)取整取模)