結果
問題 |
No.14 最小公倍数ソート
|
ユーザー |
|
提出日時 | 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 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 9 TLE * 11 |
ソースコード
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)); } }