剣指Offer-9度1513-バイナリ中1の個数
4078 ワード
Offer-9 1513-バイナリ 1の
2013-11-29 23:35
タイトルの説明:
整数を入力し、その数のバイナリ表現の1つの数を出力します.ここで負数は補数で表される.
入力:
入力には、複数のテストサンプルが含まれる場合があります.各入力ファイルについて、最初の行には、テストサンプルの数を表す整数Tが入力されます.テストサンプルごとに整数として入力します.nはint範囲内の整数であることを保証する.
出力:
各テストケースに対応して、入力した数の1つを表す整数を出力します.
サンプル入力:
3
4
5
-1
サンプル出力:
1
2
32
:
《 》 , :x & (-x),x & (x - 1)。
x & (-x) lowbit , x ‘1’。
x & (x - 1) x ‘1’。
x ‘1’, x=0 。 O(log(x)), O(1)。
1 // 651827 zhuli19901106 1513 Accepted case 1020KB 350B 80MS
2 // 201311151734
3 #include <cstdio>
4 using namespace std;
5
6 int main()
7 {
8 int x;
9 int res;
10 int n;
11 int i;
12
13 while(scanf("%d", &n) == 1){
14 for(i = 0; i < n; ++i){
15 scanf("%d", &x);
16 res = 0;
17 while(x){
18 x = (x & (x - 1));
19 ++res;
20 }
21 printf("%d
", res);
22 }
23 }
24
25 return 0;
26 }