結果
| 問題 |
No.3037 トグルトグルトグル!
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-15 23:38:00 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,489 bytes |
| コンパイル時間 | 462 ms |
| コンパイル使用メモリ | 82,200 KB |
| 実行使用メモリ | 67,404 KB |
| 最終ジャッジ日時 | 2025-04-15 23:39:19 |
| 合計ジャッジ時間 | 2,072 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 3 |
| other | RE * 13 |
ソースコード
import operator as op
zero = len("")
one = len("x")
mod = op.add(op.pow(len(".........."), len(".........")), len("......."))
def multiply(a, b):
a00 = a[zero][zero]
a01 = a[zero][one]
a10 = a[one][zero]
a11 = a[one][one]
b00 = b[zero][zero]
b01 = b[zero][one]
b10 = b[one][zero]
b11 = b[one][one]
c00 = op.mod(op.add(op.mul(a00, b00), op.mul(a01, b10)), mod)
c01 = op.mod(op.add(op.mul(a00, b01), op.mul(a01, b11)), mod)
c10 = op.mod(op.add(op.mul(a10, b00), op.mul(a11, b10)), mod)
c11 = op.mod(op.add(op.mul(a10, b01), op.mul(a11, b11)), mod)
return [[c00, c01], [c10, c11]]
def matrix_pow(mat, power):
result = [[one, zero], [zero, one]]
while op.gt(power, zero):
if op.eq(op.mod(power, op.add(one, one)), one):
result = multiply(result, mat)
mat = multiply(mat, mat)
power = op.floordiv(power, op.add(one, one))
return result
def compute_lucas(n):
if op.eq(n, zero):
return op.mod(op.add(one, one), mod)
elif op.eq(n, one):
return op.mod(one, mod)
else:
exponent = op.add(n, ~zero)
mat_pow = matrix_pow([[one, one], [one, zero]], exponent)
L1 = one
L0 = op.add(one, one)
term1 = op.mul(mat_pow[zero][zero], L1)
term2 = op.mul(mat_pow[zero][one], L0)
l_n = op.add(term1, term2)
return op.mod(l_n, mod)
T = int(input())
for _ in range(T):
Ni = int(input())
print(compute_lucas(Ni))
lam6er