結果
問題 | No.147 試験監督(2) |
ユーザー | hideh_1231 |
提出日時 | 2020-03-18 15:04:06 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 918 bytes |
コンパイル時間 | 162 ms |
コンパイル使用メモリ | 12,928 KB |
実行使用メモリ | 24,632 KB |
最終ジャッジ日時 | 2024-05-08 02:20:26 |
合計ジャッジ時間 | 7,384 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | TLE | - |
testcase_01 | -- | - |
testcase_02 | -- | - |
testcase_03 | -- | - |
ソースコード
MOD = 10**9+7 def repeatedSquaring(n, p): if p == 0: return 1 if p % 2 == 0: t = repeatedSquaring(n, p / 2) return t * t % MOD return n * repeatedSquaring(n, p - 1) % MOD m = 10**4 #A*B def mul(a,b): c = [[0]*len(b[0]) for i in range(len(a))] for i in range(len(a)): for k in range(len(b)): for j in range(len(b[0])): c[i][j]=(c[i][j]+a[i][k]*b[k][j])%MOD return c #A**n def pow(a,n): b =[ [0] * len(a) for i in range(len(a))] for i in range(len(a)): b[i][i] = 1 #aを2乗していき、nの2進数表記が1の箇所のみを掛け合わせせていく while n > 0: if n & 1 == 1: #nの1の位が0のとき b = mul(a,b) a = mul(a,a) n = n>> 1 return b A = [[1,1],[1,0]] ans = 1 n = int(input()) for i in range(n): c, d = map(int, input().split()) t = pow(A,c+2)[1][0] ans = ans * repeatedSquaring(t, d) % MOD print(ans)