はなたの日記

プログラミング(C言語)の勉強をしています。超初心者です。

Volume0-0031 Weight

問題
天秤 | Aizu Online Judge

与えられた自然数を2のn乗の和で表す問題。以前学んだが、こういうのはビット演算を利用すると良いらしい。

参考
ビット演算子 - 演算子 - C言語 入門

てなわけで実装。

#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を場合分けした。