結果
問題 | No.1559 Next Rational |
ユーザー |
|
提出日時 | 2021-06-26 01:17:10 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,142 bytes |
コンパイル時間 | 646 ms |
コンパイル使用メモリ | 70,592 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-25 09:03:13 |
合計ジャッジ時間 | 1,310 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 |
コンパイルメッセージ
a.cpp:7:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
ソースコード
#line 1 "a.cpp"#include<iostream>#include<atcoder/modint>using namespace std;#line 1 "/home/kotatsugame/library/math/squarematrix.cpp"#include<array>template<typename T,unsigned int N>struct Matrix{array<array<T,N>,N>dat;array<T,N>&operator[](int i){return dat[i];}const array<T,N>&operator[](int i)const{return dat[i];}static Matrix eye(){Matrix res;for(int i=0;i<N;i++)res[i][i]=1;return res;}Matrix operator+(const Matrix&A)const{Matrix res;for(int i=0;i<N;i++)for(int j=0;j<N;j++)res[i][j]=dat[i][j]+A[i][j];return res;}Matrix operator*(const Matrix&A)const{Matrix res;for(int i=0;i<N;i++)for(int k=0;k<N;k++)for(int j=0;j<N;j++)res[i][j]+=dat[i][k]*A[k][j];return res;}Matrix pow(long long n)const{Matrix a=*this,res=eye();for(;n;a=a*a,n>>=1)if(n&1)res=res*a;return res;}};#line 5 "a.cpp"using mint=atcoder::modint1000000007;using mat=Matrix<mint,2>;main(){long N,A,B,K;cin>>N>>A>>B>>K;if(N==1){cout<<A<<endl;return 0;}mat X;X[0][0]=mint(A*A+B*B+K)/A/B;X[0][1]=-1;X[1][0]=1;X=X.pow(N-2);cout<<(X[0][0]*B+X[0][1]*A).val()<<endl;}