NYOJ-275チーム花の悩み

2458 ワード

チーム花の悩み
時間制限:
3000 ms|メモリ制限:
65535 KB
難易度:
1
説明
ACMチームのチーム花C小+はよく文句を言います:“C言語の中のフォーマットの出力の中で16、10、8進数の出力があって、しかし2進数の出力がなくて、ああ、残念です!誰が私に1つのプログラムを書いて1つの10進数nを入力することを実現して、その2進数を出力することができますか?”
彼女を助けたくないの?^^;
入力
複数のデータが入力され、データはEOFで終了する.各データni(0<=ni<=100000010000)はスペースで区切られている.
(お知らせ:EOFはファイルの終了フラグです;while(scanf("%d",&n)!=EOF){})
しゅつりょく
出力は複数行あり、各行は1つの10進数niのバイナリ数に対応する.
注意:出力されたバイナリは、余分な0を削除します.
サンプル入力
0 1 2 10

サンプル出力
0
1
10
1010

なぜループの时にi=30は过ごすことができなくて、i=29は过ごすことができて、a[30]どうして贮蓄するのは负ける数nですか??
  01. #include 02. using   namespace   std; 03. int   main() 04. { 05. int   n; 06. while (cin>>n) 07. { 08. int   m=1,i=0,r,a[30]={0}; 09. if (n==0) 10. { 11. cout<< "0" <continue ; 12. } 13. while (n) 14. { 15. r=n%2; 16. a[i]=r; 17. i++; 18. n=n/2; 19. } 20. int   k=1; 21. for ( int   i=29;i>=0;i--) 22. 23. if (k) 24. { 25. if (a[i]!=0) 26. { 27. cout< 28. k=0; 29. } 30. } 31. else    32. cout< 33. } 34. cout< 35. } 36. return   0; 37. }