結果
問題 |
No.2081 Make a Test Case of GCD Subset
|
ユーザー |
|
提出日時 | 2022-09-26 19:42:07 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 812 bytes |
コンパイル時間 | 275 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 66,176 KB |
最終ジャッジ日時 | 2024-12-22 15:40:17 |
合計ジャッジ時間 | 6,046 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 4 WA * 23 |
ソースコード
m = int(input()) nums = [] for i in range(1,30): nums.append((1<<i)-1) import bisect use = [] left = m while left: t = bisect.bisect_right(nums, left) use.append(t) left -= nums[t-1] def e(n): #O(NloglogN) l = [True]*(n+1) l[0] = False l[1] = False for i in range(2,n): if l[i]: for p in range(i+i,n+1,i): l[p] = False return l t = e(10**5) pn = [] cnt = 0 luse = len(use) for i in range(2, 10**5): if t[i]: pn.append(i) cnt += 1 if cnt == luse: break from math import gcd ans = set() for i in range(luse): nn = use[i] p = pn[i] cnt = 0 for j in range(p, 10**5,p): flg = True for k in pn: if k == p: continue if j % k == 0: flg = False if flg: ans.add(j) cnt += 1 if cnt == nn: break print(len(ans)) print(*ans)