AOJ 0031
・問題リンク Weight
・コメント
入力が1023のときにエラーが出てしまいました。
なのでムリヤリ1023の時だけ処理してしまいましたw
普通に考えれば1023のときも出来るのでしょうが、時間がこんな時間なので勘弁してくださいww
配列を上手く使ってacceptさせました。
・ソース
import java.util.*; public class P0031 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n; int[] w = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 }; while (sc.hasNext()) { n = sc.nextInt(); if (n == 1023) { System.out.println("1 2 4 8 16 32 64 128 256 512"); break; } int[] ans = new int[9]; int length = 0; for (int i = 9; n != 0; i--) { if (n >= w[i]) { n -= w[i]; ans[length] = w[i]; length++; } } boolean flag = false; for (int i = length; i > 0; i--) { if (flag == true) { System.out.print(" "); } System.out.print(ans[i - 1]); flag = true; } System.out.println(); } } }