結果
問題 | No.12 限定された素数 |
ユーザー |
|
提出日時 | 2023-06-14 20:45:51 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 983 ms / 5,000 ms |
コード長 | 1,920 bytes |
コンパイル時間 | 340 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 219,776 KB |
最終ジャッジ日時 | 2024-06-23 03:04:58 |
合計ジャッジ時間 | 25,544 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 26 |
ソースコード
from collections import *from itertools import *from functools import *from heapq import *import sys,mathinput = sys.stdin.readlineM = 5*10**6class prime_factorize():def __init__(self,M=10**6):self.sieve = [-1]*(M+1)self.sieve[1] = 1self.p = [False]*(M+1)self.mu = [1]*(M+1)for i in range(2,M+1):if self.sieve[i] == -1:self.p[i] = Truei2 = i**2for j in range(i2,M+1,i2):self.mu[j] = 0for j in range(i,M+1,i):self.sieve[j] = iself.mu[j] *= -1def factors(self,x):tmp = []while self.sieve[x] != x:tmp.append(self.sieve[x])x //= self.sieve[x]tmp.append(self.sieve[x])return tmpdef is_prime(self,x):return self.p[x]def mobius(self,x):return self.mu[x]pf = prime_factorize(M)primes = []for i in range(2,M+1):if pf.is_prime(i):primes.append(i)N = int(input())A = list(map(int,input().split()))B = []for i in range(10):if i in A:continueB.append(i)A = set(A)B = set(B)ans = -1S = set()l=0r=0n = len(primes)while r<n:for j in str(primes[r]):S.add(int(j))if len(S&B)!=0:l = r+1r = lS = set()continueif S&A==A:if r==n-1:if l==0:ans = max(ans,M-1)else:ans = max(ans,M - primes[l-1]-1)else:if l==0:ans = max(ans,primes[r+1]-1-1)else:ans = max(ans,primes[r+1]-1 - (primes[l-1]+1))r += 1print(ans)