結果
問題 | No.8087 幸せな家族と除け者たち |
ユーザー |
|
提出日時 | 2023-09-13 18:12:19 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 34 ms / 2,000 ms |
コード長 | 2,382 bytes |
コンパイル時間 | 200 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 10,496 KB |
最終ジャッジ日時 | 2024-07-01 02:50:28 |
合計ジャッジ時間 | 602 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 1 |
ソースコード
def is_prime(n: int) -> bool:for i in range(2, n):if n % i == 0:return Falsereturn Truedef prime_factorize(n: int) -> list[tuple[int, int]]:res = []p = 1while n > 1:p += 1if not is_prime(p):continuee = 0while n % p == 0:e += 1n //= pres.append((p, e))return resdef pretty(pf: list[tuple[int, int]]) -> str:return ' '.join(str(e) for p, e in pf)# https://oeis.org/A001228O = [7920, 95040, 175560, 443520, 604800, 10200960, 44352000, 50232960, 244823040, 898128000, 4030387200, 145926144000, 448345497600, 460815505920,495766656000, 42305421312000, 64561751654400, 273030912000000, 51765179004000000, 90745943887872000, 4089470473293004800, 4157776806543360000,86775571046077562880, 1255205709190661721292800, 4154781481226426191177580544000000, 808017424794512875886459904961710757005754368000000000]assert len(O) == 26x = 433536485242324290468617700417455364450827766781149222360763650909761367389882988885139582203840750697595829714068587820137806573020739031914050848405080498961121956355636199276360499200000000000000000000000000000000000000000000# print(f'x : {pretty(prime_factorize(x))}')# for i in range(26):# print(f'{chr(ord("A") + i)} : {pretty(prime_factorize(O[i]))}')# x : 205 96 44 26 14 5 3 9 6 1 7 1 1 0 2 0 1 0 1 1# A : 4 2 1 0 1# B : 6 3 1 0 1# C : 3 1 1 1 1 0 0 1# D : 7 2 1 1 1# E : 7 3 2 1# F : 7 2 1 1 1 0 0 0 1# G : 9 2 3 1 1# H : 7 5 1 0 0 0 1 1# I : 10 3 1 1 1 0 0 0 1# J : 7 6 3 1 1# K : 10 3 2 3 0 0 1# L : 14 3 3 1 0 1 0 0 0 1# M : 13 7 2 1 1 1# N : 9 4 1 3 1 0 0 1 0 0 1# O : 10 7 3 1 1 0 0 0 1# P : 18 6 3 1 1 0 0 0 1# Q : 17 9 2 1 1 1# R : 14 6 6 1 1 0 0 1# S : 8 7 6 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1# T : 15 10 3 2 0 1 0 1 0 0 1# U : 18 13 2 1 1 1 1 0 1# V : 21 9 4 2 1 1 0 0 1# W : 21 3 1 1 3 0 0 0 1 1 1 1 0 1# X : 21 16 2 3 1 1 1 0 1 1# Y : 41 13 6 2 1 1 1 1 1 0 1 0 0 0 1# Z : 46 20 9 6 2 3 1 1 1 1 1 0 1 0 1 0 1 0 0 1C = ['Z', 'Y', 'S', 'T', 'N', 'N', 'N', 'O', 'O', 'I', 'I', 'C', 'H', 'R', 'A']for c in C:i = ord(c) - ord('A')assert x % O[i] == 0, ix //= O[i]assert x == 1print('synchronization')