結果
| 問題 |
No.1419 Power Moves
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-15 21:02:13 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 458 ms / 2,000 ms |
| コード長 | 1,012 bytes |
| コンパイル時間 | 248 ms |
| コンパイル使用メモリ | 82,408 KB |
| 実行使用メモリ | 77,440 KB |
| 最終ジャッジ日時 | 2025-04-15 21:07:23 |
| 合計ジャッジ時間 | 8,566 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 31 |
ソースコード
import sys
import math
MOD = 10**9 + 7
def main():
N, K = map(int, sys.stdin.readline().split())
inv_2K = pow(2, K, MOD)
inv_2K = pow(inv_2K, MOD-2, MOD)
pow_2K_mod_N = pow(2, K, N)
for m in range(N):
D = (pow_2K_mod_N - 1 - m) % N
g = math.gcd(2, N)
if D % g != 0:
print(0)
continue
M = N // g
D_prime = D // g
a_over_g = 2 // g
try:
inv_2_over_g = pow(a_over_g, -1, M)
except ValueError:
print(0)
continue
T0 = (D_prime * inv_2_over_g) % M
b = pow(2, K, M)
pow_2K_mod_MMOD = pow(2, K, M * MOD)
inv_M = pow(M, MOD-2, MOD)
a = ((pow_2K_mod_MMOD - b) * inv_M) % MOD
if b >= T0 + 1:
count = (a + 1) % MOD
else:
count = a % MOD
res = (count * inv_2K) % MOD
print(res)
if __name__ == "__main__":
main()
lam6er