結果
| 問題 |
No.14 最小公倍数ソート
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-11-21 11:40:42 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 772 bytes |
| コンパイル時間 | 10,163 ms |
| コンパイル使用メモリ | 232,020 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-10 20:12:16 |
| 合計ジャッジ時間 | 12,159 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 20 |
ソースコード
package main
import (
"fmt"
)
func divisors(num int) []int {
var ret []int
for i := 1; i*i < num; i++ {
if num%i == 0 {
ret = append(ret, i)
if i*i != num {
ret = append(ret, num/i)
}
}
}
return ret
}
var dp, m [10001]int
func main() {
var N int
fmt.Scan(&N)
A := make([]int, N)
for i := 0; i < N; i++ {
fmt.Scan(&A[i])
m[A[i]]++
}
next := A[0]
m[next]--
fmt.Print(next)
for i := 0; i < N-1; i++ {
divisor := divisors(next)
check := 99999
ans := 0
for _, d := range divisor {
for d*dp[d] <= 10000 {
if m[d*dp[d]] > 0 {
if check <= dp[d] {
break
}
ans = d * dp[d]
check = dp[d]
} else {
dp[d]++
}
}
}
next = ans
m[next]--
fmt.Print(" ", next)
}
fmt.Print("\n")
}