baru003のブログ

baruの雑記兼備忘録

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();
		}
	}
}