結果
問題 | No.14 最小公倍数ソート |
ユーザー | scache |
提出日時 | 2014-11-12 03:34:53 |
言語 | Java (openjdk 23) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,423 bytes |
コンパイル時間 | 2,830 ms |
コンパイル使用メモリ | 82,612 KB |
実行使用メモリ | 128,496 KB |
最終ジャッジ日時 | 2024-12-31 09:56:52 |
合計ジャッジ時間 | 89,552 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 148 ms
114,916 KB |
testcase_01 | AC | 149 ms
61,028 KB |
testcase_02 | AC | 150 ms
115,724 KB |
testcase_03 | AC | 562 ms
119,768 KB |
testcase_04 | TLE | - |
testcase_05 | AC | 4,066 ms
72,864 KB |
testcase_06 | AC | 4,538 ms
73,320 KB |
testcase_07 | TLE | - |
testcase_08 | TLE | - |
testcase_09 | TLE | - |
testcase_10 | TLE | - |
testcase_11 | TLE | - |
testcase_12 | TLE | - |
testcase_13 | TLE | - |
testcase_14 | TLE | - |
testcase_15 | TLE | - |
testcase_16 | AC | 4,466 ms
66,076 KB |
testcase_17 | AC | 3,489 ms
61,168 KB |
testcase_18 | AC | 2,493 ms
61,696 KB |
testcase_19 | TLE | - |
ソースコード
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Main p = new Main(); } public Main() { Scanner sc = new Scanner(System.in); int[] a = new int[sc.nextInt()]; for(int i=0;i<a.length;i++) a[i] = sc.nextInt(); solve(a); } public void solve(int[] a) { LcmNumber[] lcms = new LcmNumber[a.length]; for(int i=0;i<a.length;i++) lcms[i] = new LcmNumber(lcm(a[0], a[i]), a[i]); Arrays.sort(lcms, Math.min(1, lcms.length-1), lcms.length); for(int i=1;i<a.length;i++){ for(int j=i+1;j<a.length;j++){ lcms[j].lcm = lcm(Math.max(lcms[i].num, lcms[j].num), Math.min(lcms[i].num, lcms[j].num)); } Arrays.sort(lcms, i+1, lcms.length); } for(int i=0;i<lcms.length-1;i++) System.out.print(lcms[i].num+ " "); System.out.println(lcms[lcms.length-1].num); } private class LcmNumber implements Comparable<LcmNumber>{ int lcm; int num; public LcmNumber(int lcm, int num){ this.lcm =lcm; this.num = num; } @Override public int compareTo(LcmNumber o) { if(this.lcm!=o.lcm) return this.lcm-o.lcm; else return this.num - o.num; } } private int gcm(int a, int b){ if(a%b==0) return b; else return gcm(b, a%b); } private int lcm(int a, int b){ return a*b/(gcm(a, b)); } }