結果
問題 | No.917 Make One With GCD |
ユーザー |
|
提出日時 | 2022-05-03 18:07:26 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 85 ms / 2,000 ms |
コード長 | 752 bytes |
コンパイル時間 | 158 ms |
コンパイル使用メモリ | 82,560 KB |
実行使用メモリ | 70,272 KB |
最終ジャッジ日時 | 2024-07-02 14:33:20 |
合計ジャッジ時間 | 3,625 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 32 |
ソースコード
n = int(input()) A = list(map(int,input().split())) divs = set() divnum = {} for a in A: for i in range(1,int(a**0.5)+1): if a%i: continue divs.add(i) divnum[i] = divnum.get(i,0)+1 divs.add(a//i) if i != a//i: divnum[a//i] = divnum.get(a//i,0)+1 divs = sorted(divs) le = len(divs) dp = [[0]*(n+1) for i in range(le)] for i in range(le)[::-1]: d = divs[i] num = divnum[d] dp[i][num] = 1 base = 1 for j in range(num): base *= num-j base //= (j+1) dp[i][num-j-1] = base for j in range(i+1,le): if divs[j]%d: continue for k in range(num+1): dp[i][k] -= dp[j][k] print(sum(dp[0][1:]))