Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Weight"
https://onlinejudge.u-aizu.ac.jp/problems/0031
⇓問題概要
input
複数のデータセットが与えられます。各データセットに、左の皿に載せる品物の重さが1行に与えられます。入力の最後まで処理して下さい。データセットの数は 50 を超えません。
output
各データセットに対して、右の皿に載せる分銅(昇順)を1つの空白で区切って、1行に出力して下さい。
また、10 個の分銅の重さは、軽い順に 1g, 2g, 4g, 8g, 16g, 32g, 64g, 128g, 256g, 512g です。
僕が作成、提出したコードは、以下のとおりです。
・Aizu Online Judge in C++ #Volume0 - 0031 : Weight
/* Aizu Online Judge in C++ #Volume0 - 0031 : Weight https://onlinejudge.u-aizu.ac.jp/problems/0031 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n; while(cin>>n){ for(ll i=1;n>0;i*=2,n/=2){ if(n%2){ cout<<i<<(n>1 ? " " : "\n"); } } } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/