首先要了解第二类斯特灵数,还有贝尔数,
接下来是解题的关键:
若p为任意质数,则有Bell(n+p) = Bell(n) + Bell(n+1) (mod p);
我们来分解题目给的模的数 95041567=31*37*41*43*47,这五个数都是素数,所以可以用上述的式子来解题目,同时又因为 这五个数两两互素,所以可以利用中国剩余定理来解 x=a1(mod m1)这个同余方程组,求出 mod(m1*m2...*mi)d的值,这样就可以得到答案了
但是在使用中国剩余定理之前 我们要求出 Bell(n)%各个素数的 值,这里需要矩阵快速幂
举个例子 若 素数为5此时可以构造这样一个矩阵
0 1 0 0 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1
1 0 0 0 1
再列举一个3的矩阵,你就会发现一定的规律,这样就可以求出 Bell(n)%各个素数的值了
#include
#include
#include
#include
#include
#include
#include
#include
#include