Volume0-0031 Weight
与えられた自然数を2のn乗の和で表す問題。以前学んだが、こういうのはビット演算を利用すると良いらしい。
てなわけで実装。
#include<stdio.h> int main(){ int w; int hundou; while(scanf("%d",&w)!=EOF){ hundou=1; while(w!=0){ if(w==1)printf("%d\n",hundou); else if( (w & 1)==1 )printf("%d ",hundou); w=w>>1; hundou*=2; } } return 0; }
パパッとコードは書けたが、表示形式で手こずった。
最後の分銅の後ろに空白が残るため
printf("\b\n");
とやってみた。手元で実行したらいい感じになったのだが、提出したらwrongとなってしまった。
仕方なくprintfを場合分けした。