結果
| 問題 |
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;
}