結果
問題 | No.12 限定された素数 |
ユーザー |
![]() |
提出日時 | 2023-02-22 17:13:44 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,342 bytes |
コンパイル時間 | 112 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 44,284 KB |
最終ジャッジ日時 | 2024-07-22 18:42:27 |
合計ジャッジ時間 | 42,851 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 17 WA * 9 |
ソースコード
def Eratosthenes(n):sieve = [True] * ((n + 1) // 2)for i in range(1, (int(n ** 0.5) + 1) // 2):if sieve[i]:for j in range(i * 3 + 1, (n + 1) // 2, i * 2 + 1):sieve[j] = Falseres = [i * 2 + 1 for i, s in enumerate(sieve) if s]res[0] = 2return resdef check(nums, used, n):cnt = [0, 0]for i in range(10):if used[i] > 0:cnt[nums[i]] += 1if cnt[0] > 0:return -1if cnt[1] < n:return 0return 1def getDigits(x):ret = []while x > 0:ret.append(x % 10)x //= 10return retn = int(input())a = list(map(int, input().split()))MAX = 5000000prime = Eratosthenes(MAX)nums = [0] * 10for i in a:nums[i] = 1used = [0] * 10idx = 0l = 1k = 1ans = -1prime.append(MAX)state = 0pre = 0while idx < len(prime) - 1:d = []while state != -1:pre = statek = prime[idx]d.clear()d = getDigits(k)for i in d:used[i] += 1state = check(nums, used, n)idx += 1if idx >= len(prime) - 1:pre = statebreakif pre == 1:ans = max(ans, k - 1 - l)else:l = k + 1used = [0] * 10state = 0if pre == 1:ans = max(ans, MAX - l)print(ans)