結果

問題 No.14 最小公倍数ソート
ユーザー zimphazimpha
提出日時 2017-12-07 21:23:43
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 529 bytes
コンパイル時間 157 ms
コンパイル使用メモリ 82,568 KB
実行使用メモリ 93,608 KB
最終ジャッジ日時 2024-05-06 19:30:56
合計ジャッジ時間 21,804 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 37 ms
60,404 KB
testcase_01 AC 35 ms
61,384 KB
testcase_02 AC 36 ms
60,648 KB
testcase_03 AC 443 ms
87,004 KB
testcase_04 AC 4,593 ms
88,792 KB
testcase_05 AC 2,039 ms
86,860 KB
testcase_06 AC 2,065 ms
87,896 KB
testcase_07 AC 2,509 ms
88,656 KB
testcase_08 TLE -
testcase_09 AC 4,103 ms
88,620 KB
testcase_10 AC 4,207 ms
88,496 KB
testcase_11 AC 4,194 ms
88,704 KB
testcase_12 AC 4,213 ms
88,668 KB
testcase_13 AC 4,215 ms
88,444 KB
testcase_14 AC 4,329 ms
89,008 KB
testcase_15 AC 4,278 ms
88,480 KB
testcase_16 AC 3,599 ms
87,328 KB
testcase_17 AC 1,701 ms
88,504 KB
testcase_18 AC 960 ms
88,080 KB
testcase_19 AC 4,461 ms
87,192 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

upp = 1000
mem = [[-1] * upp for i in range(upp)]
def fast_gcd(x, y):
  if x < upp and y < upp and mem[x][y] != -1:
    return mem[x][y]
  gcd = x if not y else fast_gcd(y, x % y)
  if x < upp and y < upp:
    mem[x][y] = gcd
  return gcd

n = int(input())
a = list(map(int, input().split()))
for i in range(n - 1):
  x = i + 1
  r = a[x] / fast_gcd(a[i], a[x])
  for j in range(i + 2, n):
    t = a[j] / fast_gcd(a[i], a[j])
    if t < r or (t == r and a[j] < a[x]):
      r, x = t, j
  a[i + 1], a[x] = a[x], a[i + 1]
print(*a)
0