結果
問題 | No.891 隣接3項間の漸化式 |
ユーザー |
|
提出日時 | 2019-09-21 00:42:34 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 583 bytes |
コンパイル時間 | 554 ms |
コンパイル使用メモリ | 65,408 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-15 06:25:53 |
合計ジャッジ時間 | 1,697 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 39 |
コンパイルメッセージ
main.cpp:5:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 5 | main() | ^~~~
ソースコード
#include<iostream> using namespace std; long mod=1e9+7,a,b,n; long A[2][2],B[2][2],C[2][2]; main() { cin>>a>>b>>n; B[0][0]=B[1][1]=1; A[0][0]=a; A[0][1]=b; A[1][0]=1; for(;n;n/=2) { if(n%2) { for(int i=0;i<4;i++)C[i/2][i%2]=B[i/2][i%2],B[i/2][i%2]=0; for(int i=0;i<2;i++)for(int j=0;j<2;j++) { for(int k=0;k<2;k++)(B[i][j]+=A[i][k]*C[k][j]%mod)%=mod; } } for(int i=0;i<4;i++)C[i/2][i%2]=A[i/2][i%2],A[i/2][i%2]=0; for(int i=0;i<2;i++)for(int j=0;j<2;j++) { for(int k=0;k<2;k++)(A[i][j]+=C[i][k]*C[k][j]%mod)%=mod; } } cout<<B[1][0]<<endl; }