学会了怎么推矩阵啊哈哈哈哈哈

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
const long long mod=2147493647;
const int maxn=100000+10;
struct T{
	long long maxtrix[7][7];
	int lenx,leny;
	void base(){
		lenx=leny=7;
		maxtrix[0][0]=0;maxtrix[0][1]=1;maxtrix[0][2]=0;maxtrix[0][3]=0;maxtrix[0][4]=0;maxtrix[0][5]=0;maxtrix[0][6]=0;
		maxtrix[1][0]=2;maxtrix[1][1]=1;maxtrix[1][2]=1;maxtrix[1][3]=0;maxtrix[1][4]=0;maxtrix[1][5]=0;maxtrix[1][6]=0;
		maxtrix[2][0]=0;maxtrix[2][1]=0;maxtrix[2][2]=1;maxtrix[2][3]=4;maxtrix[2][4]=6;maxtrix[2][5]=4;maxtrix[2][6]=1;
		maxtrix[3][0]=0;maxtrix[3][1]=0;maxtrix[3][2]=0;maxtrix[3][3]=1;maxtrix[3][4]=3;maxtrix[3][5]=3;maxtrix[3][6]=1;
		maxtrix[4][0]=0;maxtrix[4][1]=0;maxtrix[4][2]=0;maxtrix[4][3]=0;maxtrix[4][4]=1;maxtrix[4][5]=2;maxtrix[4][6]=1;
		maxtrix[5][0]=0;maxtrix[5][1]=0;maxtrix[5][2]=0;maxtrix[5][3]=0;maxtrix[5][4]=0;maxtrix[5][5]=1;maxtrix[5][6]=1;
		maxtrix[6][0]=0;maxtrix[6][1]=0;maxtrix[6][2]=0;maxtrix[6][3]=0;maxtrix[6][4]=0;maxtrix[6][5]=0;maxtrix[6][6]=1;
	}
	void get1(int k){
		lenx=leny=k;
		memset(maxtrix,0,sizeof(maxtrix));
		for(int i=0;i<k;++i)maxtrix[i][i]=1;
	}
}t;
T operator *(T x,T y){
	T res;
	memset(res.maxtrix,0,sizeof(res.maxtrix));
	res.lenx=x.lenx;
	res.leny=y.leny;
	for(int i=0;i<x.lenx;i++){
		for(int j=0;j<y.leny;j++){
			for(int k=0;k<x.leny;k++){
				res.maxtrix[i][j]=((x.maxtrix[i][k]*y.maxtrix[k][j])%mod+res.maxtrix[i][j])%mod;
			}
		}
	}
	return res;
}
T _pow(T a,long long x){
	T res;res.get1(7);
	while(x){
		if(x&1)res=res*a;
		a=a*a;
		x>>=1;
	}
	return res;
}
int main(){
	freopen("sequence.in", "r", stdin);
	freopen("sequence.out", "w", stdout); 
	long long i,j,k,m,n,a1,a2;
	T x;x.base();
	scanf("%lld%lld%lld",&n,&a1,&a2);
	x=_pow(x,n-2);
	T ans;
	ans.lenx=7;ans.leny=1;
	ans.maxtrix[0][0]=a1;ans.maxtrix[1][0]=a2;
	ans.maxtrix[2][0]=81;
	ans.maxtrix[3][0]=27;
	ans.maxtrix[4][0]=9;
	ans.maxtrix[5][0]=3;
	ans.maxtrix[6][0]=1;
	ans=x*ans;
	cout<<ans.maxtrix[1][0]<<endl;
	return 0;
}

posted @ 2016-11-09 22:01  Drinkwater_cnyali  阅读(189)  评论(1编辑  收藏  举报