結果
| 問題 |
No.1232 2^x = x
|
| コンテスト | |
| ユーザー |
WSKR
|
| 提出日時 | 2020-09-21 22:05:31 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 35 ms / 2,000 ms |
| コード長 | 1,184 bytes |
| コンパイル時間 | 216 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 11,008 KB |
| 最終ジャッジ日時 | 2024-06-24 20:54:38 |
| 合計ジャッジ時間 | 1,235 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 3 |
ソースコード
#yukicoder
# author:WSKR
import math
def xgcd(a, b):
x0, y0, x1, y1 = 1, 0, 0, 1
while b != 0:
q, a, b = a // b, b, a % b
x0, x1 = x1, x0 - q * x1
y0, y1 = y1, y0 - q * y1
return a, x0, y0
def modinv(a, m):
g, x, y = xgcd(a, m)
if g != 1:
return False
else:
return x % m
def divisors(X):
Sets = set([])
for i in range(1, N+1):
if i**2 > X:
break
else:
if X % i == 0:
Sets.add(i)
Sets.add(X//i)
return Sets
def chinese_reminder(pair1, pair2):
x1, y1 = pair1
x2, y2 = pair2
g = math.gcd(y1, y2)
if (x2-x1) % g != 0:
return (float("inf"), float("inf"))
else:
K = (x2-x1)//g
y1, y2 = y1//g, y2//g
t = -K*modinv(y2, y1)
m = x2+t*g*y2
return (m % (g*y1*y2), g*y1*y2)
def solve():
p = int(input())
if p == 2:
print(2)
return
else:
res, mod = chinese_reminder((0, p-1), (1, p))
print(res)
return
def main():
N = int(input())
for i in range(N):
solve()
if __name__ == "__main__":
main()
WSKR