1 条题解
-
0
C++ :
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> using namespace std; long long n; const long long mod=1e9+7; struct Mat{ long long m[2][2]; }; Mat mut(Mat a,Mat b) { Mat ans; for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { ans.m[i][j]=0; for(int k=0;k<2;k++) { ans.m[i][j]+=(a.m[i][k]*b.m[k][j])%mod; ans.m[i][j]%=mod; } } } return ans; } Mat power(Mat a,long long p) { Mat ans; memset(ans.m,0,sizeof(ans.m)); for(int i=0;i<2;i++) { ans.m[i][i]=1; } while(p) { if(p%2==0) { a=mut(a,a); p/=2; } else { ans=mut(ans,a); p--; } } return ans; } int main() { // freopen( "C.txt", "r", stdin ); //freopen( "_C.txt", "w", stdout ); while(cin>>n) { Mat ans; ans.m[0][0]=ans.m[1][1]=3; ans.m[0][1]=ans.m[1][0]=1; ans=power(ans,n); cout<<ans.m[0][0]%mod<<endl; } return 0; }
- 1
信息
- ID
- 3073
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者