結果

問題 No.8082 幸せな家族と除け者たち (体験版)
コンテスト
ユーザー titia
提出日時 2026-04-13 06:01:29
言語 Python3
(3.14.3 + numpy 2.4.4 + scipy 1.17.1)
コンパイル:
python3 -mpy_compile _filename_
実行:
python3 _filename_
結果
AC  
実行時間 156 ms / 2,000 ms
コード長 2,431 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 635 ms
コンパイル使用メモリ 20,828 KB
実行使用メモリ 15,448 KB
最終ジャッジ日時 2026-04-13 06:01:32
合計ジャッジ時間 2,230 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from collections import Counter
#X=int(input())
# x以下の素数の列挙,素因数分解,約数の列挙
#x=10**7 
import math 
#L=math.floor(math.sqrt(x)) # 平方根を求める

#Primelist=[i for i in range(x+1)]
#Primelist[1]=0 # 1は素数でないので0にする.
 
#for i in Primelist:
#    if i>L:
#        break
#    if i==0:
#        continue
#    for j in range(2*i,x+1,i):
#        Primelist[j]=0

#Primes=[Primelist[j] for j in range(x+1) if Primelist[j]!=0]

#D=Counter()

#ind=0
#while X>1:
#    print(X)
#    a=Primes[ind]
#    while X%a==0:
#        D[a]+=1
#        X//=a
#        print(X,a)
#    ind+=1

#print(D)

D=Counter({151: 21, 277: 21, 293: 21, 367: 21, 13: 20, 167: 20, 281: 20, 307: 20, 313: 20, 379: 20, 41: 19, 149: 19, 163: 19, 193: 19, 257: 19, 457: 19, 29: 18, 173: 18, 211: 18, 233: 18, 349: 18, 229: 16, 283: 16, 347: 16, 83: 15, 89: 15, 271: 15, 353: 15, 389: 15, 439: 15, 443: 15, 3: 14, 11: 14, 181: 14, 241: 13, 59: 12, 61: 12, 97: 12, 131: 12, 137: 12, 419: 12, 421: 12, 449: 12, 7: 9, 37: 9, 103: 9, 179: 9, 239: 9, 317: 8, 19: 7, 191: 7, 79: 6, 107: 6, 109: 6, 397: 6, 433: 6, 17: 5, 23: 5, 67: 5, 223: 5, 251: 5, 331: 5, 71: 4, 359: 4, 47: 3, 373: 3, 157: 2, 2: 1, 53: 1, 127: 1, 199: 1, 409: 1})

X=list(D)

C=[]

for x in sorted(X):
    C.append(D[x])

C=[1, 14, 9, 14, 20, 5, 7, 5, 18, 9, 19, 3, 1, 12, 12, 5, 4, 6, 15, 15, 12, 9, 6, 6, 1, 12, 12, 19, 21, 2, 19, 20, 18, 9, 14, 7, 19, 1, 18, 5, 16, 18, 9, 13, 5, 19, 15, 21, 20, 16, 21, 20, 20, 8, 5, 16, 18, 15, 4, 21, 3, 20, 15, 6, 1, 12, 12, 6, 15, 15, 12, 19]

ANS=""
for c in C:
    ANS+=chr(c+96)

#print("".join(ANS))

# an integer is called fool iff all substrings are primes output the product of all fools

def calc_prime(x):
    if x==1:
        return False
    for i in range(2,round(x**(1/2))+1):
        if 1<i<x and x%i==0:
            return False
    return True

def calc(x):
    S=str(x)

    for i in range(len(S)+1):
        for j in range(i+1,len(S)+1):
            T=S[i:j]
            if len(T)==0:
                continue
            xx=int(T)

            if calc_prime(xx)==False:
                return False

    return True

Q=[1,2,3,4,5,6,7,8,9]

ANS=[]

while Q:
    x=Q.pop()
    #print(x)

    if calc(x)==True:
        ANS.append(x)

        for w in [1,2,3,4,5,6,7,8,9]:
            v=str(x)+str(w)
            Q.append(int(v))



LA=1
for ans in set(ANS):
    LA*=ans

print(LA)

    
    

0