結果
問題 | No.147 試験監督(2) |
ユーザー | hideh_1231 |
提出日時 | 2020-03-18 15:09:03 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 900 bytes |
コンパイル時間 | 305 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 24,768 KB |
最終ジャッジ日時 | 2024-05-08 02:21:55 |
合計ジャッジ時間 | 7,020 ms |
ジャッジサーバーID (参考情報) |
judge3 / 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 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 def pows(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 n = int(input()) A = [[1,1],[1,0]] ans = 1 for i in range(n): c, d = map(int, input().split()) t = pows(A,c+2)[1][0] ans = ans * repeatedSquaring(t, d) % MOD print(ans)