矩阵乘法快速幂,注意记录过程量; 还有就是如果前面已经算过了,直接赋值就好了。
#include#include #include #include #include #define LL long long#define MOD 1000000007using namespace std;LL A[4][4]={ 0,0,0,0, 0,1,1,0, 0,0,0,1, 0,1,0,0, };LL ans[2][4],B[4][4],C[4][4],bak[4][4],a[109];int T;struct H{ LL n;int id;}q[109];bool cmp(H x,H y){ return x.n =1) {a[q[i].id]=1;continue;} if(i==1) Fast_Pow(q[1].n-3); else if(n-q[i-1].n)Fast_Pow(n-q[i-1].n); a[q[i].id]=ans[1][1]; } for(int i=1;i<=T;i++) printf("%lld\n",a[i]); return 0;}