結果
| 問題 | No.1258 コインゲーム | 
| コンテスト | |
| ユーザー |  Eki1009 | 
| 提出日時 | 2020-10-16 22:29:48 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 230 ms / 2,000 ms | 
| コード長 | 1,011 bytes | 
| コンパイル時間 | 170 ms | 
| コンパイル使用メモリ | 82,332 KB | 
| 実行使用メモリ | 77,568 KB | 
| 最終ジャッジ日時 | 2024-07-20 22:46:30 | 
| 合計ジャッジ時間 | 12,025 ms | 
| ジャッジサーバーID (参考情報) | judge2 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 50 | 
ソースコード
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**7)
mod = 10**9+7
X = [[1, 1], [1, 1]]
Y = [[1, 1], [1, 1]]
def f():
    n, m, x = map(int, input().split())
    X[0][0] = 1
    X[0][1] = m
    X[1][0] = m
    X[1][1] = 1
    Y[0][0] = 1
    Y[0][1] = 0
    Y[1][0] = 0
    Y[1][1] = 1
    
    while n:
        if n%2:
            a = X[0][0]*Y[0][0] + X[0][1]*Y[1][0]
            b = X[0][0]*Y[0][1] + X[0][1]*Y[1][1]
            c = X[1][0]*Y[0][0] + X[1][1]*Y[1][0]
            d = X[1][0]*Y[0][1] + X[1][1]*Y[1][1]
            Y[0][0] = a%mod
            Y[0][1] = b%mod
            Y[1][0] = c%mod
            Y[1][1] = d%mod
        a = X[0][0]*X[0][0] + X[0][1]*X[1][0]
        b = X[0][0]*X[0][1] + X[0][1]*X[1][1]
        c = X[1][0]*X[0][0] + X[1][1]*X[1][0]
        d = X[1][0]*X[0][1] + X[1][1]*X[1][1]
        X[0][0] = a%mod
        X[0][1] = b%mod
        X[1][0] = c%mod
        X[1][1] = d%mod
        n //= 2
    
    print(Y[0][x])
s = int(input())
for _ in range(s):
    f()
            
            
            
        