結果

問題 No.147 試験監督(2)
ユーザー kotatsugamekotatsugame
提出日時 2020-03-04 08:39:18
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 533 ms / 2,000 ms
コード長 818 bytes
コンパイル時間 660 ms
コンパイル使用メモリ 66,048 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-10-13 23:31:32
合計ジャッジ時間 3,707 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 523 ms
5,248 KB
testcase_01 AC 528 ms
5,248 KB
testcase_02 AC 533 ms
5,248 KB
testcase_03 AC 1 ms
5,248 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp:17:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   17 | main()
      | ^~~~

ソースコード

diff #

#include<iostream>
using namespace std;
long mod=1e9+7;
struct Mat{long A[2][2];};
Mat E;
long power(long a,long b){return b?power(a*a%mod,b/2)*(b%2?a:1)%mod:a?1:0;}
Mat Mmul(Mat a,Mat b){
	Mat ret;
	for(int i=0;i<2;i++)for(int j=0;j<2;j++)ret.A[i][j]=0;
	for(int i=0;i<2;i++)for(int j=0;j<2;j++)for(int k=0;k<2;k++)
	{
		(ret.A[i][j]+=a.A[i][k]*b.A[k][j])%=mod;
	}
	return ret;
}
Mat Mpow(Mat a,long b){return b?Mmul(Mpow(Mmul(a,a),b/2),b%2?a:E):E;}
main()
{
	E.A[0][0]=E.A[1][1]=1;
	E.A[0][1]=E.A[1][0]=0;
	int N;cin>>N;
	long ans=1;
	for(;N--;)
	{
		long C;cin>>C;
		Mat f;
		f.A[0][0]=f.A[0][1]=f.A[1][0]=1;
		f.A[1][1]=0;
		f=Mpow(f,C);
		long T=(f.A[0][0]+f.A[1][0])%mod;
		string Ds;cin>>Ds;
		long D=0;
		for(int i=0;i<Ds.size();i++)D=(D*10+Ds[i]-'0')%(mod-1);
		ans=ans*power(T,D)%mod;
	}
	cout<<ans<<endl;
}
0