此题就是考察了一个简单的公式
a^x % c = a^(x % phi(c) + phi(c)) %c 其中x>= phi(c)
phi(c)为欧拉函数
注意 欧拉函数的定义为 不超过n且与n互素的正整数的个数 而不是小于n
并且phi(1) =1
然后对于本题 分成三部分
第一部分 n! < phi(c) 这时就需要直接计算n! ,好在phi(c)不会很大。
第二部分 n! >= phi(c) 但是 n! % phi(c) != 0 这一部分同样需要暴力计算,不过可以进行取模运算了,不会出现非常大的数
第三部分n! >= phi(c) 并且n! % phi(c) == 0 这一部分就转化为了 n^phi(c) % c 然后就变成了(n % c) ^ phi(c) % c 那么就成了一个长度为c的循环节了
最后 需要特别注意的是,题目给的范围很大,需要用uLL, 并且答案有可能会超过uLL,因为当 c=1,b=0时,0到2^64-1都是符合条件的,所以需要特判
代码不再给出,也不是很难写