记录编号 282826 评测结果 AAAAAAAAAA
题目名称 斐波那契平方和 最终得分 100
用户昵称 Gravatar面对疾风吧 疾风 疾风吧 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-07-13 21:24:49 内存使用 0.00 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef unsigned long long LL;
/*LL mul(LL a,LL b){
    LL sum=0;
    while(b){
        if(b&1) sum=(sum+a)%Mod;
        a=(a+a)%Mod;b>>=1;
    }
    return sum;
}*/
LL n,ans,Mod=1000000007;
struct MA{
	LL a[5][5];
	void init(bool flag){
		for(int i=1;i<=4;i++){
			for(int j=1;j<=4;j++){
				a[i][j]=0;
			}
		}
		if(flag){
			for(int i=1;i<=4;i++)a[i][i]=1;
		}
	}
	MA operator *(const MA &b)const{
		MA c;
		for(int i=1;i<=4;i++){
			for(int j=1;j<=4;j++){
				c.a[i][j]=0;
				for(int k=1;k<=4;k++){
					c.a[i][j]+=a[i][k]*b.a[k][j]%Mod;
				}
			}
		}
		return c;
	}
};
MA T,F,A;

void _init();
void _work();
LL _quickpow();
int Main();
int haha=Main();
int main(){;}
int Main(){
	freopen("fibsqr.in","r",stdin);
	freopen("fibsqr.out","w",stdout);
	scanf("%llu",&n);n--;
	_init();
	ans=_quickpow();
	printf("%llu\n",ans);
	return 0;
}
void _init(){
	F.a[1][1]=1;F.a[1][2]=1;F.a[1][3]=1;F.a[1][4]=1;
	F.a[2][1]=1;F.a[2][2]=0;F.a[2][3]=0;F.a[2][4]=0;
	F.a[3][1]=2;F.a[3][2]=0;F.a[3][3]=1;F.a[3][4]=0;
	F.a[4][1]=0;F.a[4][2]=0;F.a[3][4]=0;F.a[4][4]=1;
	A.a[1][1]=1;A.a[1][2]=1;A.a[1][3]=1;A.a[1][4]=1;
}
LL _quickpow(){
	T.init(1);
	for(;n;n>>=1,F=F*F)if(n&1)T=T*F;
	A=A*T;
	return A.a[1][4]%Mod;
}