提出 #62117259
ソースコード 拡げる
# https://judge.yosupo.jp/submission/159590
from random import randint
from math import gcd
def is_prime(n):
if n % 2 == 0:
return n == 2
if n == 1:
return False
d = n - 1
s = 0
while d % 2 == 0:
d = d // 2
s += 1
a = [2, 7, 61]
for i in a:
if i >= n:
break
now = pow(i, d, n)
if now != 1:
comp = True
for j in range(s):
if now == n - 1:
comp = False
break
now = (now * now) % n
if comp:
return False
return True
def prime_fact(n):
ret = []
for i in range(2, 100):
while n % i == 0:
ret.append(i)
n //= i
if n == 1:
return ret
calc = [n]
while len(calc) > 0:
n = calc.pop()
while not (is_prime(n)):
x = randint(0, n - 1)
plus = randint(1, n - 1)
y = x
i = 1
while True:
x = (x * x + plus) % n
y = (y * y + plus) % n
y = (y * y + plus) % n
d = gcd(abs(x - y), n)
if d == 1:
i += 1
elif d == n or d == 0:
break
else:
if is_prime(d):
ret.append(d)
else:
calc.append(d)
n = n // d
break
ret.append(n)
return ret
from sys import stdin
input = stdin.readline
for _ in range(int(input())):
n = int(input())
while True:
k = randint(1, 1000)
p = n * k + 1
if is_prime(p):
break
fa = list(set(prime_fact(n)))
while True:
a = pow(randint(1, p - 1), k, p)
for f in fa:
if pow(a, n // f, p) == 1:
break
else:
print(a, p)
break
提出情報
| 提出日時 | |
|---|---|
| 問題 | C - A^n - 1 |
| ユーザ | sounansya |
| 言語 | Python (PyPy 3.10-v7.3.12) |
| 得点 | 600 |
| コード長 | 2086 Byte |
| 結果 | AC |
| 実行時間 | 331 ms |
| メモリ | 86296 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 600 / 600 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt |
| All | 00_sample_00.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 02_large_00.txt, 02_large_01.txt, 02_large_02.txt, 02_large_03.txt, 02_large_04.txt, 03_divisior_00.txt, 03_divisior_01.txt, 04_kN_1_00.txt, 04_kN_1_01.txt, 04_kN_1_02.txt, 05_prime_00.txt, 05_prime_01.txt, 05_prime_02.txt, 05_prime_03.txt, 05_prime_04.txt, 05_prime_05.txt, 06_random_00.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 72 ms | 77360 KiB |
| 01_small_00.txt | AC | 202 ms | 86072 KiB |
| 01_small_01.txt | AC | 209 ms | 85576 KiB |
| 01_small_02.txt | AC | 217 ms | 85504 KiB |
| 01_small_03.txt | AC | 156 ms | 85836 KiB |
| 02_large_00.txt | AC | 307 ms | 86284 KiB |
| 02_large_01.txt | AC | 305 ms | 86024 KiB |
| 02_large_02.txt | AC | 314 ms | 86296 KiB |
| 02_large_03.txt | AC | 245 ms | 85528 KiB |
| 02_large_04.txt | AC | 237 ms | 86048 KiB |
| 03_divisior_00.txt | AC | 249 ms | 85512 KiB |
| 03_divisior_01.txt | AC | 207 ms | 85548 KiB |
| 04_kN_1_00.txt | AC | 319 ms | 85892 KiB |
| 04_kN_1_01.txt | AC | 331 ms | 85332 KiB |
| 04_kN_1_02.txt | AC | 312 ms | 85496 KiB |
| 05_prime_00.txt | AC | 192 ms | 85368 KiB |
| 05_prime_01.txt | AC | 211 ms | 85376 KiB |
| 05_prime_02.txt | AC | 201 ms | 85172 KiB |
| 05_prime_03.txt | AC | 251 ms | 85876 KiB |
| 05_prime_04.txt | AC | 287 ms | 86264 KiB |
| 05_prime_05.txt | AC | 298 ms | 85572 KiB |
| 06_random_00.txt | AC | 298 ms | 85888 KiB |