結果
問題 | No.1611 Minimum Multiple with Double Divisors |
ユーザー |
👑 ![]() |
提出日時 | 2021-07-21 21:43:02 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,128 bytes |
コンパイル時間 | 334 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 97,280 KB |
最終ジャッジ日時 | 2024-07-17 17:03:25 |
合計ジャッジ時間 | 8,584 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 9 WA * 28 |
ソースコード
"""6 = 2 * 324 = 2*2*2*62*22->4"""from sys import stdinimport sysfrom collections import dequedef Sieve(n): #n以下の素数全列挙(O(nloglogn)) retは素数が入ってる。divlisはその数字の素因数が一つ入ってるret = []divlis = [-1] * (n+1) #何で割ったかのリスト(初期値は-1)flag = [True] * (n+1)flag[0] = Falseflag[1] = Falseind = 2while ind <= n:if flag[ind]:ret.append(ind)ind2 = ind ** 2while ind2 <= n:flag[ind2] = Falsedivlis[ind2] = indind2 += indind += 1return ret,divlisplis,tmp = Sieve(1000000)tt = int(stdin.readline())for loop in range(tt):X = int(stdin.readline())ans = float("inf")for p in plis:if ans < X * p:breakdivnum = 0TX = Xwhile TX % p == 0:divnum += 1TX //= pmlp = divnum + 1#print (p,mlp)ans = min(ans , X * (p**mlp))#print (p,X * (p**mlp))print (ans)