結果
| 問題 |
No.3037 トグルトグルトグル!
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 18:27:28 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,516 bytes |
| コンパイル時間 | 147 ms |
| コンパイル使用メモリ | 82,764 KB |
| 実行使用メモリ | 844,144 KB |
| 最終ジャッジ日時 | 2025-06-12 18:27:37 |
| 合計ジャッジ時間 | 2,454 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 3 |
| other | RE * 7 MLE * 1 -- * 5 |
ソースコード
# Define mod using allowed characters
ten = sum([True for _ in 'aaaaaaaaaa'])
nine = sum([True for _ in 'aaaaaaaaa'])
seven = sum([True for _ in 'aaaaaaa'])
mod = pow(ten, nine).__add__(seven)
# Basic numerical values
zero = sum([])
one = sum([True])
two = one.__add__(one)
# Initial matrix for Lucas sequence
initial_matrix = [
[one, one],
[one, zero]
]
# Vector [L(1), L(0)] = [1, 2]
vec = [one, two.__add__(zero)]
def multiply(a, b, mod_val):
c = [[zero]*two for _ in (zero, one)]
for i in (zero, one):
for j in (zero, one):
term1 = a[i][zero].__mul__(b[zero][j])
term2 = a[i][one].__mul__(b[one][j])
total = term1.__add__(term2)
c[i][j] = total.__mod__(mod_val)
return c
def matrix_pow(mat, power, mod_val):
result = [[one if i == j else zero for j in (zero, one)] for i in (zero, one)]
current = power
while current > zero:
if current.__mod__(two).__eq__(one):
result = multiply(result, mat, mod_val)
mat = multiply(mat, mat, mod_val)
current = current.__floordiv__(two)
return result
T = int(input())
for _ in (zero,)*T:
Ni = int(input())
if Ni == one:
print(one.__mod__(mod))
else:
power = Ni.__sub__(one)
mat = matrix_pow(initial_matrix, power, mod)
term1 = mat[zero][zero].__mul__(vec[zero])
term2 = mat[zero][one].__mul__(vec[one])
total = term1.__add__(term2)
ans = total.__mod__(mod)
print(ans)
gew1fw