回答編集履歴

15

関数名修正

2020/09/16 16:04

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  }
22
22
 
23
- int countGreaterThan1(unsigned int bits)
23
+ int countGreaterThanOrEqualTo1(unsigned int bits)
24
24
 
25
25
  {
26
26
 
@@ -38,7 +38,7 @@
38
38
 
39
39
  }
40
40
 
41
- int countGreaterThan2(unsigned int bits)
41
+ int countGreaterThanOrEqualTo2(unsigned int bits)
42
42
 
43
43
  {
44
44
 
@@ -100,7 +100,7 @@
100
100
 
101
101
  }
102
102
 
103
- int countGreaterThan1(unsigned int bits)
103
+ int countGreaterThanOrEqualTo1(unsigned int bits)
104
104
 
105
105
  {
106
106
 
@@ -118,7 +118,7 @@
118
118
 
119
119
  }
120
120
 
121
- int countGreaterThan2(unsigned int bits)
121
+ int countGreaterThanOrEqualTo2(unsigned int bits)
122
122
 
123
123
  {
124
124
 

14

ビット演算修正

2020/09/16 16:04

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  bits = (bits & 0b00001111000000001111000000001111) + (bits >> 6 & 0b00000000000000001111000000001111);
16
16
 
17
- bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
17
+ bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000011111);
18
18
 
19
19
  return (bits & 0b00000000000000000000000000111111) + (bits >> 24 & 0b00000000000000000000000000111111);
20
20
 
@@ -94,7 +94,7 @@
94
94
 
95
95
  bits = (bits & 0b00001111000000001111000000001111) + (bits >> 6 & 0b00000000000000001111000000001111);
96
96
 
97
- bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
97
+ bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000011111);
98
98
 
99
99
  return (bits & 0b00000000000000000000000000111111) + (bits >> 24 & 0b00000000000000000000000000111111);
100
100
 

13

コード修正

2020/09/15 19:16

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
18
18
 
19
- return (bits & 0b00000000000000000000000000111111) + (bits >> 24) & 0b00000000000000000000000000111111;
19
+ return (bits & 0b00000000000000000000000000111111) + (bits >> 24 & 0b00000000000000000000000000111111);
20
20
 
21
21
  }
22
22
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
36
36
 
37
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111;
37
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
38
38
 
39
39
  }
40
40
 
@@ -52,7 +52,7 @@
52
52
 
53
53
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
54
54
 
55
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111;
55
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
56
56
 
57
57
  }
58
58
 
@@ -72,7 +72,7 @@
72
72
 
73
73
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
74
74
 
75
- return 10 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111);
75
+ return 10 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111));
76
76
 
77
77
  }
78
78
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  上位bitが0で埋まっていれば同じですが、27bitまでの場合は以下コードで。
84
84
 
85
- どちらのコードも上位ビットが0なら`(bits >> 24)`のあとの`& 0b~`は不要です。
85
+ どちらのコードも上位ビットが0なら`bits >> 24`のあとの`& 0b~`は不要です。
86
86
 
87
87
  ```C++
88
88
 
@@ -96,7 +96,7 @@
96
96
 
97
97
  bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
98
98
 
99
- return (bits & 0b00000000000000000000000000111111) + (bits >> 24) & 0b00000000000000000000000000111111;
99
+ return (bits & 0b00000000000000000000000000111111) + (bits >> 24 & 0b00000000000000000000000000111111);
100
100
 
101
101
  }
102
102
 
@@ -114,7 +114,7 @@
114
114
 
115
115
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
116
116
 
117
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111;
117
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
118
118
 
119
119
  }
120
120
 
@@ -132,7 +132,7 @@
132
132
 
133
133
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
134
134
 
135
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111;
135
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
136
136
 
137
137
  }
138
138
 
@@ -152,7 +152,7 @@
152
152
 
153
153
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
154
154
 
155
- return 9 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111);
155
+ return 9 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111));
156
156
 
157
157
  }
158
158
 

12

不定値の場合のコード修正

2020/09/15 18:48

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
18
18
 
19
- return (bits & 0b00000000000000000000000000111111) + (bits >> 24);
19
+ return (bits & 0b00000000000000000000000000111111) + (bits >> 24) & 0b00000000000000000000000000111111;
20
20
 
21
21
  }
22
22
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
36
36
 
37
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24);
37
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111;
38
38
 
39
39
  }
40
40
 
@@ -52,7 +52,7 @@
52
52
 
53
53
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
54
54
 
55
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24);
55
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111;
56
56
 
57
57
  }
58
58
 
@@ -72,7 +72,7 @@
72
72
 
73
73
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
74
74
 
75
- return 10 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24));
75
+ return 10 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111);
76
76
 
77
77
  }
78
78
 
@@ -80,7 +80,9 @@
80
80
 
81
81
  すみません、上記コードは30bit(a[9])まで使用していました。
82
82
 
83
- 28-30bitが0で埋まっていれば同じですが、不定値可能性があるなら以下コードで。
83
+ 上位bitが0で埋まっていれば同じですが、27bitまで場合は以下コードで。
84
+
85
+ どちらのコードも上位ビットが0なら`(bits >> 24)`のあとの`& 0b~`は不要です。
84
86
 
85
87
  ```C++
86
88
 
@@ -94,7 +96,7 @@
94
96
 
95
97
  bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
96
98
 
97
- return (bits & 0b00000000000000000000000000111111) + (bits >> 24);
99
+ return (bits & 0b00000000000000000000000000111111) + (bits >> 24) & 0b00000000000000000000000000111111;
98
100
 
99
101
  }
100
102
 
@@ -112,7 +114,7 @@
112
114
 
113
115
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
114
116
 
115
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24);
117
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111;
116
118
 
117
119
  }
118
120
 
@@ -130,7 +132,7 @@
130
132
 
131
133
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
132
134
 
133
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24);
135
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111;
134
136
 
135
137
  }
136
138
 
@@ -150,7 +152,7 @@
150
152
 
151
153
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
152
154
 
153
- return 9 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24));
155
+ return 9 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24) & 0b00000000000000000000000000001111);
154
156
 
155
157
  }
156
158
 

11

28-30bitを計算対象としていたので修正コードを追記

2020/09/15 18:46

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -77,3 +77,81 @@
77
77
  }
78
78
 
79
79
  ```
80
+
81
+ すみません、上記コードは30bit(a[9])まで使用していました。
82
+
83
+ 28-30bitが0で埋まっていれば同じですが、不定値の可能性があるなら以下コードで。
84
+
85
+ ```C++
86
+
87
+ int sum(unsigned int bits)
88
+
89
+ {
90
+
91
+ bits = (bits & 0b00000111000111000111000111000111) + (bits >> 3 & 0b00000000000111000111000111000111);
92
+
93
+ bits = (bits & 0b00001111000000001111000000001111) + (bits >> 6 & 0b00000000000000001111000000001111);
94
+
95
+ bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
96
+
97
+ return (bits & 0b00000000000000000000000000111111) + (bits >> 24);
98
+
99
+ }
100
+
101
+ int countGreaterThan1(unsigned int bits)
102
+
103
+ {
104
+
105
+ bits |= (bits & 0b00000010010010010010010010010010) >> 1;
106
+
107
+ bits |= (bits & 0b00000100100100100100100100100100) >> 2;
108
+
109
+ bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000000000001000001000001000001);
110
+
111
+ bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000000000000000011000000000011);
112
+
113
+ bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
114
+
115
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24);
116
+
117
+ }
118
+
119
+ int countGreaterThan2(unsigned int bits)
120
+
121
+ {
122
+
123
+ bits |= bits >> 1;
124
+
125
+ bits >>= 1;
126
+
127
+ bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000000000001000001000001000001);
128
+
129
+ bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000000000000000011000000000011);
130
+
131
+ bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
132
+
133
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24);
134
+
135
+ }
136
+
137
+ int count2(unsigned int bits)
138
+
139
+ {
140
+
141
+ bits ^= 0b00000010010010010010010010010010;
142
+
143
+ bits |= (bits & 0b00000010010010010010010010010010) >> 1;
144
+
145
+ bits |= (bits & 0b00000100100100100100100100100100) >> 2;
146
+
147
+ bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000000000001000001000001000001);
148
+
149
+ bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000000000000000011000000000011);
150
+
151
+ bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
152
+
153
+ return 9 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24));
154
+
155
+ }
156
+
157
+ ```

10

2以上を求める際の&演算を一回削減

2020/09/15 18:36

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -42,8 +42,6 @@
42
42
 
43
43
  {
44
44
 
45
- bits &= 0b00110110110110110110110110110110;
46
-
47
45
  bits >>= 1;
48
46
 
49
47
  bits |= bits >> 1;

9

2以上を求める際の&演算を一回削減

2020/09/15 18:20

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  bits >>= 1;
48
48
 
49
- bits |= (bits & 0b00010010010010010010010010010010) >> 1;
49
+ bits |= bits >> 1;
50
50
 
51
51
  bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
52
52
 

8

不要なビット演算を除去

2020/09/15 17:47

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
18
18
 
19
- return (bits & 0b00000000000000000000000000111111) + (bits >> 24 & 0b00000000000000000000000000111111);
19
+ return (bits & 0b00000000000000000000000000111111) + (bits >> 24);
20
20
 
21
21
  }
22
22
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
36
36
 
37
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
37
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24);
38
38
 
39
39
  }
40
40
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
56
56
 
57
- return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
57
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24);
58
58
 
59
59
  }
60
60
 
@@ -74,7 +74,7 @@
74
74
 
75
75
  bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
76
76
 
77
- return 10 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111));
77
+ return 10 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24));
78
78
 
79
79
  }
80
80
 

7

2の要素数について追記

2020/09/15 17:35

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -58,4 +58,24 @@
58
58
 
59
59
  }
60
60
 
61
+ int count2(unsigned int bits)
62
+
63
+ {
64
+
65
+ bits ^= 0b00010010010010010010010010010010;
66
+
67
+ bits |= (bits & 0b00010010010010010010010010010010) >> 1;
68
+
69
+ bits |= (bits & 0b00100100100100100100100100100100) >> 2;
70
+
71
+ bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
72
+
73
+ bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000000000000000011000000000011);
74
+
75
+ bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
76
+
77
+ return 10 - ((bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111));
78
+
79
+ }
80
+
61
81
  ```

6

ビット演算修正

2020/09/15 17:30

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -24,9 +24,9 @@
24
24
 
25
25
  {
26
26
 
27
- bits |= bits >> 1;
27
+ bits |= (bits & 0b00010010010010010010010010010010)>> 1;
28
28
 
29
- bits |= bits >> 2;
29
+ bits |= (bits & 0b00100100100100100100100100100100)>> 2;
30
30
 
31
31
  bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
32
32
 
@@ -46,7 +46,7 @@
46
46
 
47
47
  bits >>= 1;
48
48
 
49
- bits |= bits >> 1;
49
+ bits |= (bits & 0b00010010010010010010010010010010) >> 1;
50
50
 
51
51
  bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
52
52
 

5

ビット演算修正

2020/09/15 17:27

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  bits |= bits >> 1;
28
28
 
29
- bits |= bits >> 1;
29
+ bits |= bits >> 2;
30
30
 
31
31
  bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
32
32
 

4

ビット演算修正

2020/09/15 17:18

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -12,9 +12,9 @@
12
12
 
13
13
  bits = (bits & 0b00000111000111000111000111000111) + (bits >> 3 & 0b00000111000111000111000111000111);
14
14
 
15
- bits = (bits & 0b00001111000000001111000000001111) + (bits >> 6 & 0b00001111000000001111000000001111);
15
+ bits = (bits & 0b00001111000000001111000000001111) + (bits >> 6 & 0b00000000000000001111000000001111);
16
16
 
17
- bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00001111000000000000000000001111);
17
+ bits = (bits & 0b00011111000000000000000000011111) + (bits >> 12 & 0b00000000000000000000000000001111);
18
18
 
19
19
  return (bits & 0b00000000000000000000000000111111) + (bits >> 24 & 0b00000000000000000000000000111111);
20
20
 
@@ -28,11 +28,11 @@
28
28
 
29
29
  bits |= bits >> 1;
30
30
 
31
- bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
31
+ bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
32
32
 
33
- bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000011000000000011000000000011);
33
+ bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000000000000000011000000000011);
34
34
 
35
- bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000111000000000000000000000111);
35
+ bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
36
36
 
37
37
  return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
38
38
 
@@ -48,11 +48,11 @@
48
48
 
49
49
  bits |= bits >> 1;
50
50
 
51
- bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
51
+ bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
52
52
 
53
- bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000011000000000011000000000011);
53
+ bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000000000000000011000000000011);
54
54
 
55
- bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000111000000000000000000000111);
55
+ bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000000000000000000000000000111);
56
56
 
57
57
  return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
58
58
 

3

スペル修正

2020/09/15 16:57

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  }
22
22
 
23
- int countGraterThan1(unsigned int bits)
23
+ int countGreaterThan1(unsigned int bits)
24
24
 
25
25
  {
26
26
 
@@ -38,7 +38,7 @@
38
38
 
39
39
  }
40
40
 
41
- int countGraterThan2(unsigned int bits)
41
+ int countGreaterThan2(unsigned int bits)
42
42
 
43
43
  {
44
44
 

2

2以上カウント追記

2020/09/15 16:33

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -38,4 +38,24 @@
38
38
 
39
39
  }
40
40
 
41
+ int countGraterThan2(unsigned int bits)
42
+
43
+ {
44
+
45
+ bits &= 0b00110110110110110110110110110110;
46
+
47
+ bits >>= 1;
48
+
49
+ bits |= bits >> 1;
50
+
51
+ bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
52
+
53
+ bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000011000000000011000000000011);
54
+
55
+ bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000111000000000000000000000111);
56
+
57
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
58
+
59
+ }
60
+
41
61
  ```

1

1以上カウント追記

2020/09/15 16:32

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -20,4 +20,22 @@
20
20
 
21
21
  }
22
22
 
23
+ int countGraterThan1(unsigned int bits)
24
+
25
+ {
26
+
27
+ bits |= bits >> 1;
28
+
29
+ bits |= bits >> 1;
30
+
31
+ bits = (bits & 0b00000001000001000001000001000001) + (bits >> 3 & 0b00000001000001000001000001000001);
32
+
33
+ bits = (bits & 0b00000011000000000011000000000011) + (bits >> 6 & 0b00000011000000000011000000000011);
34
+
35
+ bits = (bits & 0b00000111000000000000000000000111) + (bits >> 12 & 0b00000111000000000000000000000111);
36
+
37
+ return (bits & 0b00000000000000000000000000001111) + (bits >> 24 & 0b00000000000000000000000000001111);
38
+
39
+ }
40
+
23
41
  ```