回答編集履歴

8

間違いがあるので非表示

2020/09/15 21:02

投稿

mjk
mjk

スコア303

test CHANGED
@@ -1,42 +1,8 @@
1
- 実装はもっとスマートに出来ると思いますが考え方だけ。
2
-
3
-
4
-
5
- 2以上の判定を行う例
6
-
7
- 27桁ソースして必要なマスクとの論理演算を行います。
1
+ #※間違いがあるで参考リンク以外を非表示にしておきます。
8
-
9
- `000000000000000100011010001`
10
-
11
- `010010010010010010010010010`
12
-
13
-
14
-
15
- 分解イメージ
16
-
17
- `000 000 000 000 000 100 011 010 001`
18
-
19
- `010 010 010 010 010 010 010 010 010`
20
-
21
- AND演算
22
-
23
- `000 000 000 000 000 000 010 010 000`
24
-
25
- 結果のONビットのものをbitsetのcountでカウントする。
26
-
27
-
28
-
29
- その他条件でも論理演算を数回組み合わせてマスクでふるいにかける感じで計算出来そうです。
30
-
31
- とりあえず>=1,==2,>=2は数えられました。
32
-
33
- 合計は全要素操作するしかないと思われるので割愛します。
34
2
 
35
3
 
36
4
 
37
5
  ---
38
-
39
-
40
6
 
41
7
  参考:[ビット演算](https://c.keicode.com/cpp/bitwise-operations.php)
42
8
 
@@ -45,265 +11,3 @@
45
11
 
46
12
 
47
13
  参考:[ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜](https://qiita.com/drken/items/7c6ff2aa4d8fce1c9361)
48
-
49
-
50
-
51
- ---
52
-
53
-
54
-
55
- 例==2かどうか
56
-
57
-
58
-
59
- 111 101 010 元データ
60
-
61
-       &演算
62
-
63
- 010 010 010 チェックbit
64
-
65
-       
66
-
67
- 010 000 010 答え=bit系関数でカウント
68
-
69
-
70
-
71
- AND演算後のONビットを数える関数で計算数回で出来そうです。
72
-
73
-
74
-
75
- ---
76
-
77
-
78
-
79
- こんな感じで出来ます。27桁多いので9桁ですが。
80
-
81
- ```C++
82
-
83
- #include <bitset>
84
-
85
- #include <iostream>
86
-
87
-
88
-
89
- using namespace std;
90
-
91
-
92
-
93
- // >=2 )
94
-
95
- void f3() {
96
-
97
- string s1 = "100010001"; //ソース
98
-
99
- bitset<9> b1(s1);
100
-
101
- string s6 = "110110110"; //マスク6
102
-
103
- bitset<9> b6(s6);
104
-
105
- string s4 = "100100100"; //マスク4
106
-
107
- bitset<9> b4(s4);
108
-
109
- string s2 = "010010010"; //マスク2
110
-
111
- bitset<9> b2(s2);
112
-
113
-
114
-
115
- int sum = 0;
116
-
117
-
118
-
119
- cout << "b1 " << b1 << endl;
120
-
121
- cout << "b6 " << b6 << endl << endl;
122
-
123
- b1 = b1 & b6;
124
-
125
-
126
-
127
- bitset<9> b_tmp = b1;
128
-
129
-
130
-
131
- cout << "AND&) " << b1 << endl;
132
-
133
- cout << "b4 " << b4 << endl;
134
-
135
- cout << "b1 " << b1 << endl;
136
-
137
- b1 = b1 & b4;
138
-
139
- sum += b1.count();
140
-
141
- cout << "==4 ) " << b1.count() << endl << endl;
142
-
143
-
144
-
145
- cout << "AND&) " << b_tmp << endl;
146
-
147
- cout << "b2 " << b2 << endl;
148
-
149
- b1 = b_tmp & b2;
150
-
151
- cout << "b1 " << b1 << endl;
152
-
153
- sum += b1.count();
154
-
155
- cout << "2or3) " << b1.count() << endl << endl;
156
-
157
- cout << ">=2 ) " << sum << endl;
158
-
159
- }
160
-
161
-
162
-
163
- // ==2 )
164
-
165
- void f2() {
166
-
167
- string s1 = "100010001"; //ソース
168
-
169
- bitset<9> b1(s1);
170
-
171
- string s2 = "010010010"; //マスク
172
-
173
- bitset<9> b2(s2);
174
-
175
-
176
-
177
- cout << "b1 " << b1 << endl;
178
-
179
- cout << "b2 " << b2 << endl;
180
-
181
-
182
-
183
- b1 = b1 & b2;
184
-
185
- // b1 &= b2;
186
-
187
-
188
-
189
- cout << "AND&) " << b1 << endl;
190
-
191
-
192
-
193
- cout << "==2 ) " << b1.count() << endl << endl;
194
-
195
- }
196
-
197
-
198
-
199
- // >=1 )
200
-
201
- void f1() {
202
-
203
- string sc = "100010001"; //ソース
204
-
205
- bitset<9> bs(sc);
206
-
207
- string s4 = "100100100"; //マスク4
208
-
209
- bitset<9> b4(s4);
210
-
211
- string s2 = "010010010"; //マスク2
212
-
213
- bitset<9> b2(s2);
214
-
215
- string s1 = "001001001"; //マスク1
216
-
217
- bitset<9> b1(s1);
218
-
219
-
220
-
221
- int sum = 0;
222
-
223
- bitset<9> tp;
224
-
225
- tp = bs & b1;
226
-
227
- sum += tp.count();
228
-
229
- tp = bs & b2;
230
-
231
- sum += tp.count();
232
-
233
- tp = bs & b4;
234
-
235
- sum += tp.count();
236
-
237
- cout << ">=1 ) " << sum << endl << endl;
238
-
239
- }
240
-
241
-
242
-
243
- int main() {
244
-
245
- f1();
246
-
247
- f2();
248
-
249
- f3();
250
-
251
- getchar();
252
-
253
- }
254
-
255
-
256
-
257
- // 引用元
258
-
259
- // https://c.keicode.com/cpp/bitwise-operations.php
260
-
261
- ```
262
-
263
-
264
-
265
- ```output
266
-
267
- >=1 ) 3
268
-
269
-
270
-
271
- b1 100010001
272
-
273
- b2 010010010
274
-
275
- AND&) 000010000
276
-
277
- ==2 ) 1
278
-
279
-
280
-
281
- b1 100010001
282
-
283
- b6 110110110
284
-
285
-
286
-
287
- AND&) 100010000
288
-
289
- b4 100100100
290
-
291
- b1 100010000
292
-
293
- ==4 ) 1
294
-
295
-
296
-
297
- AND&) 100010000
298
-
299
- b2 010010010
300
-
301
- b1 000010000
302
-
303
- 2or3) 1
304
-
305
-
306
-
307
- >=2 ) 2
308
-
309
- ```

7

説明修正

2020/09/15 21:01

投稿

mjk
mjk

スコア303

test CHANGED
@@ -2,9 +2,33 @@
2
2
 
3
3
 
4
4
 
5
+ 2以上の判定を行う例
6
+
7
+ 27桁のソースに対して必要なマスクとの論理演算を行います。
8
+
9
+ `000000000000000100011010001`
10
+
11
+ `010010010010010010010010010`
12
+
13
+
14
+
15
+ 分解イメージ
16
+
17
+ `000 000 000 000 000 100 011 010 001`
18
+
19
+ `010 010 010 010 010 010 010 010 010`
20
+
21
+ AND演算
22
+
23
+ `000 000 000 000 000 000 010 010 000`
24
+
25
+ 結果のONビットのものをbitsetのcountでカウントする。
26
+
27
+
28
+
5
- 論理演算を数回組み合わせてマスクでふるいにかける感じで計算出来るかも知れません
29
+ その他条件でも論理演算を数回組み合わせてマスクでふるいにかける感じで計算出来そうです
6
-
30
+
7
- とりあえず>=1,==2,>=2は数えられそうです
31
+ とりあえず>=1,==2,>=2は数えられました
8
32
 
9
33
  合計は全要素操作するしかないと思われるので割愛します。
10
34
 

6

出力修正

2020/09/15 18:33

投稿

mjk
mjk

スコア303

test CHANGED
@@ -1,19 +1,59 @@
1
+ 実装はもっとスマートに出来ると思いますが考え方だけ。
2
+
3
+
4
+
5
+ 論理演算を数回組み合わせてマスクでふるいにかける感じで計算出来るかも知れません。
6
+
7
+ とりあえず>=1,==2,>=2は数えられそうです。
8
+
9
+ 合計は全要素操作するしかないと思われるので割愛します。
10
+
11
+
12
+
13
+ ---
14
+
15
+
16
+
17
+ 参考:[ビット演算](https://c.keicode.com/cpp/bitwise-operations.php)
18
+
19
+
20
+
21
+
22
+
23
+ 参考:[ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜](https://qiita.com/drken/items/7c6ff2aa4d8fce1c9361)
24
+
25
+
26
+
27
+ ---
28
+
29
+
30
+
31
+ 例==2かどうか
32
+
33
+
34
+
35
+ 111 101 010 元データ
36
+
37
+       &演算
38
+
39
+ 010 010 010 チェックbit
40
+
41
+       
42
+
43
+ 010 000 010 答え=bit系関数でカウント
44
+
45
+
46
+
47
+ AND演算後のONビットを数える関数で計算数回で出来そうです。
48
+
49
+
50
+
51
+ ---
52
+
53
+
54
+
1
55
  こんな感じで出来ます。27桁多いので9桁ですが。
2
56
 
3
-
4
-
5
-
6
-
7
- 論理演算を数回組み合わせてマスクでふるいにかける感じで計算出来るかも知れませんね。
8
-
9
- とりあえず>=1,==2,>=2は数えられそうです。
10
-
11
- 合計は全要素操作するしかないと思われるので割愛します。
12
-
13
-
14
-
15
-
16
-
17
57
  ```C++
18
58
 
19
59
  #include <bitset>
@@ -200,6 +240,10 @@
200
240
 
201
241
  ```output
202
242
 
243
+ >=1 ) 3
244
+
245
+
246
+
203
247
  b1 100010001
204
248
 
205
249
  b2 010010010
@@ -238,44 +282,4 @@
238
282
 
239
283
  >=2 ) 2
240
284
 
241
-
242
-
243
285
  ```
244
-
245
-
246
-
247
- 参考:[ビット演算](https://c.keicode.com/cpp/bitwise-operations.php)
248
-
249
-
250
-
251
-
252
-
253
- 参考:[ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜](https://qiita.com/drken/items/7c6ff2aa4d8fce1c9361)
254
-
255
-
256
-
257
- よく調べていませんが直感でいけそうかなと思ったので。
258
-
259
- 取り急ぎ思いつきですみません。
260
-
261
-
262
-
263
- 例==2かどうか
264
-
265
-
266
-
267
- 111 101 010 元データ
268
-
269
-       &演算
270
-
271
- 010 010 010 チェックbit
272
-
273
-       
274
-
275
- 010 000 010 答え=bit系関数でカウント
276
-
277
-
278
-
279
- AND演算後のONビットを数える関数で計算1回で出来そうですが
280
-
281
- 調べていないので関数を知りません。

5

>=1,>=2,==2 追記

2020/09/15 18:13

投稿

mjk
mjk

スコア303

test CHANGED
@@ -6,9 +6,11 @@
6
6
 
7
7
  論理演算を数回組み合わせてマスクでふるいにかける感じで計算出来るかも知れませんね。
8
8
 
9
- とりあえず==2と ==4と 2or3は数えられそうです。
9
+ とりあえず>=1,==2,>=2は数えられそうです。
10
-
10
+
11
- >=1てませんが同様に各ビット毎に1110 3回分count取ば数えられはずです。
11
+ 合計全要素操作するしかなと思われる割愛します。
12
+
13
+
12
14
 
13
15
 
14
16
 
@@ -26,15 +28,117 @@
26
28
 
27
29
  // >=2 )
28
30
 
31
+ void f3() {
32
+
33
+ string s1 = "100010001"; //ソース
34
+
35
+ bitset<9> b1(s1);
36
+
37
+ string s6 = "110110110"; //マスク6
38
+
39
+ bitset<9> b6(s6);
40
+
41
+ string s4 = "100100100"; //マスク4
42
+
43
+ bitset<9> b4(s4);
44
+
45
+ string s2 = "010010010"; //マスク2
46
+
47
+ bitset<9> b2(s2);
48
+
49
+
50
+
51
+ int sum = 0;
52
+
53
+
54
+
55
+ cout << "b1 " << b1 << endl;
56
+
57
+ cout << "b6 " << b6 << endl << endl;
58
+
59
+ b1 = b1 & b6;
60
+
61
+
62
+
63
+ bitset<9> b_tmp = b1;
64
+
65
+
66
+
67
+ cout << "AND&) " << b1 << endl;
68
+
69
+ cout << "b4 " << b4 << endl;
70
+
71
+ cout << "b1 " << b1 << endl;
72
+
73
+ b1 = b1 & b4;
74
+
75
+ sum += b1.count();
76
+
77
+ cout << "==4 ) " << b1.count() << endl << endl;
78
+
79
+
80
+
81
+ cout << "AND&) " << b_tmp << endl;
82
+
83
+ cout << "b2 " << b2 << endl;
84
+
85
+ b1 = b_tmp & b2;
86
+
87
+ cout << "b1 " << b1 << endl;
88
+
89
+ sum += b1.count();
90
+
91
+ cout << "2or3) " << b1.count() << endl << endl;
92
+
93
+ cout << ">=2 ) " << sum << endl;
94
+
95
+ }
96
+
97
+
98
+
99
+ // ==2 )
100
+
29
101
  void f2() {
30
102
 
31
103
  string s1 = "100010001"; //ソース
32
104
 
33
105
  bitset<9> b1(s1);
34
106
 
35
- string s6 = "110110110"; //マスク
107
+ string s2 = "010010010"; //マスク
36
-
108
+
37
- bitset<9> b6(s6);
109
+ bitset<9> b2(s2);
110
+
111
+
112
+
113
+ cout << "b1 " << b1 << endl;
114
+
115
+ cout << "b2 " << b2 << endl;
116
+
117
+
118
+
119
+ b1 = b1 & b2;
120
+
121
+ // b1 &= b2;
122
+
123
+
124
+
125
+ cout << "AND&) " << b1 << endl;
126
+
127
+
128
+
129
+ cout << "==2 ) " << b1.count() << endl << endl;
130
+
131
+ }
132
+
133
+
134
+
135
+ // >=1 )
136
+
137
+ void f1() {
138
+
139
+ string sc = "100010001"; //ソース
140
+
141
+ bitset<9> bs(sc);
38
142
 
39
143
  string s4 = "100100100"; //マスク4
40
144
 
@@ -44,87 +148,29 @@
44
148
 
45
149
  bitset<9> b2(s2);
46
150
 
151
+ string s1 = "001001001"; //マスク1
152
+
153
+ bitset<9> b1(s1);
154
+
47
155
 
48
156
 
49
157
  int sum = 0;
50
158
 
51
-
52
-
53
- cout << "b1 " << b1 << endl;
159
+ bitset<9> tp;
54
-
55
- cout << "b6 " << b6 << endl << endl;
160
+
56
-
57
- b1 = b1 & b6;
161
+ tp = bs & b1;
58
-
59
-
60
-
61
- bitset<9> b_tmp = b1;
162
+
62
-
63
-
64
-
65
- cout << "AND&) " << b1 << endl;
66
-
67
- cout << "b4 " << b4 << endl;
68
-
69
- cout << "b1 " << b1 << endl;
70
-
71
- b1 = b1 & b4;
72
-
73
- sum += b1.count();
163
+ sum += tp.count();
74
-
75
- cout << "==4 ) " << b1.count() << endl << endl;
164
+
76
-
77
-
78
-
79
- cout << "AND&) " << b_tmp << endl;
80
-
81
- cout << "b2 " << b2 << endl;
82
-
83
- b1 = b_tmp & b2;
165
+ tp = bs & b2;
84
-
85
- cout << "b1 " << b1 << endl;
166
+
86
-
87
- sum += b1.count();
167
+ sum += tp.count();
168
+
88
-
169
+ tp = bs & b4;
170
+
171
+ sum += tp.count();
172
+
89
- cout << "2or3) " << b1.count() << endl << endl;
173
+ cout << ">=1 ) " << sum << endl << endl;
90
-
91
- cout << ">=2 ) " << sum << endl;
92
-
93
- }
94
-
95
-
96
-
97
- // ==2 )
98
-
99
- void f1() {
100
-
101
- string s1 = "100010001"; //ソース
102
-
103
- bitset<9> b1(s1);
104
-
105
- string s2 = "010010010"; //マスク
106
-
107
- bitset<9> b2(s2);
108
-
109
-
110
-
111
- cout << "b1 " << b1 << endl;
112
-
113
- cout << "b2 " << b2 << endl;
114
-
115
-
116
-
117
- b1 = b1 & b2;
118
-
119
- // b1 &= b2;
120
-
121
-
122
-
123
- cout << "AND&) " << b1 << endl;
124
-
125
-
126
-
127
- cout << "==2 ) " << b1.count() << endl;
128
174
 
129
175
  }
130
176
 
@@ -132,12 +178,12 @@
132
178
 
133
179
  int main() {
134
180
 
135
- // f1();
181
+ f1();
136
-
137
- cout << endl;
138
182
 
139
183
  f2();
140
184
 
185
+ f3();
186
+
141
187
  getchar();
142
188
 
143
189
  }

4

>=1の補足

2020/09/15 18:07

投稿

mjk
mjk

スコア303

test CHANGED
@@ -8,6 +8,8 @@
8
8
 
9
9
  とりあえず==2と ==4と 2or3は数えられそうです。
10
10
 
11
+ >=1は書いてませんが同様に各ビット毎に1110 3回分count取れば数えられるはずです。
12
+
11
13
 
12
14
 
13
15
  ```C++

3

2以上の追記

2020/09/15 17:56

投稿

mjk
mjk

スコア303

test CHANGED
@@ -1,5 +1,15 @@
1
1
  こんな感じで出来ます。27桁多いので9桁ですが。
2
2
 
3
+
4
+
5
+
6
+
7
+ 論理演算を数回組み合わせてマスクでふるいにかける感じで計算出来るかも知れませんね。
8
+
9
+ とりあえず==2と ==4と 2or3は数えられそうです。
10
+
11
+
12
+
3
13
  ```C++
4
14
 
5
15
  #include <bitset>
@@ -12,37 +22,119 @@
12
22
 
13
23
 
14
24
 
25
+ // >=2 )
26
+
27
+ void f2() {
28
+
29
+ string s1 = "100010001"; //ソース
30
+
31
+ bitset<9> b1(s1);
32
+
33
+ string s6 = "110110110"; //マスク6
34
+
35
+ bitset<9> b6(s6);
36
+
37
+ string s4 = "100100100"; //マスク4
38
+
39
+ bitset<9> b4(s4);
40
+
41
+ string s2 = "010010010"; //マスク2
42
+
43
+ bitset<9> b2(s2);
44
+
45
+
46
+
47
+ int sum = 0;
48
+
49
+
50
+
51
+ cout << "b1 " << b1 << endl;
52
+
53
+ cout << "b6 " << b6 << endl << endl;
54
+
55
+ b1 = b1 & b6;
56
+
57
+
58
+
59
+ bitset<9> b_tmp = b1;
60
+
61
+
62
+
63
+ cout << "AND&) " << b1 << endl;
64
+
65
+ cout << "b4 " << b4 << endl;
66
+
67
+ cout << "b1 " << b1 << endl;
68
+
69
+ b1 = b1 & b4;
70
+
71
+ sum += b1.count();
72
+
73
+ cout << "==4 ) " << b1.count() << endl << endl;
74
+
75
+
76
+
77
+ cout << "AND&) " << b_tmp << endl;
78
+
79
+ cout << "b2 " << b2 << endl;
80
+
81
+ b1 = b_tmp & b2;
82
+
83
+ cout << "b1 " << b1 << endl;
84
+
85
+ sum += b1.count();
86
+
87
+ cout << "2or3) " << b1.count() << endl << endl;
88
+
89
+ cout << ">=2 ) " << sum << endl;
90
+
91
+ }
92
+
93
+
94
+
95
+ // ==2 )
96
+
97
+ void f1() {
98
+
99
+ string s1 = "100010001"; //ソース
100
+
101
+ bitset<9> b1(s1);
102
+
103
+ string s2 = "010010010"; //マスク
104
+
105
+ bitset<9> b2(s2);
106
+
107
+
108
+
109
+ cout << "b1 " << b1 << endl;
110
+
111
+ cout << "b2 " << b2 << endl;
112
+
113
+
114
+
115
+ b1 = b1 & b2;
116
+
117
+ // b1 &= b2;
118
+
119
+
120
+
121
+ cout << "AND&) " << b1 << endl;
122
+
123
+
124
+
125
+ cout << "==2 ) " << b1.count() << endl;
126
+
127
+ }
128
+
129
+
130
+
15
131
  int main() {
16
132
 
17
- string s1 = "010010010";
18
-
19
- bitset<9> b1(s1);
20
-
21
- string s2 = "111101010";
22
-
23
- bitset<9> b2(s2);
24
-
25
-
26
-
27
- cout << "b1 " << b1 << endl;
28
-
29
- cout << "b2 " << b2 << endl;
30
-
31
-
32
-
33
- b1 = b1 & b2;
34
-
35
- // b1 &= b2;
133
+ // f1();
36
-
37
-
38
-
134
+
39
- cout << "AND&) " << b1 << endl;
135
+ cout << endl;
40
-
41
-
42
-
136
+
43
- cout << "==2 ) " << b1.count() << endl;
137
+ f2();
44
-
45
-
46
138
 
47
139
  getchar();
48
140
 
@@ -50,12 +142,60 @@
50
142
 
51
143
 
52
144
 
145
+ // 引用元
146
+
53
147
  // https://c.keicode.com/cpp/bitwise-operations.php
54
148
 
55
149
  ```
56
150
 
57
151
 
58
152
 
153
+ ```output
154
+
155
+ b1 100010001
156
+
157
+ b2 010010010
158
+
159
+ AND&) 000010000
160
+
161
+ ==2 ) 1
162
+
163
+
164
+
165
+ b1 100010001
166
+
167
+ b6 110110110
168
+
169
+
170
+
171
+ AND&) 100010000
172
+
173
+ b4 100100100
174
+
175
+ b1 100010000
176
+
177
+ ==4 ) 1
178
+
179
+
180
+
181
+ AND&) 100010000
182
+
183
+ b2 010010010
184
+
185
+ b1 000010000
186
+
187
+ 2or3) 1
188
+
189
+
190
+
191
+ >=2 ) 2
192
+
193
+
194
+
195
+ ```
196
+
197
+
198
+
59
199
  参考:[ビット演算](https://c.keicode.com/cpp/bitwise-operations.php)
60
200
 
61
201
 

2

コード追記

2020/09/15 17:40

投稿

mjk
mjk

スコア303

test CHANGED
@@ -1,3 +1,67 @@
1
+ こんな感じで出来ます。27桁多いので9桁ですが。
2
+
3
+ ```C++
4
+
5
+ #include <bitset>
6
+
7
+ #include <iostream>
8
+
9
+
10
+
11
+ using namespace std;
12
+
13
+
14
+
15
+ int main() {
16
+
17
+ string s1 = "010010010";
18
+
19
+ bitset<9> b1(s1);
20
+
21
+ string s2 = "111101010";
22
+
23
+ bitset<9> b2(s2);
24
+
25
+
26
+
27
+ cout << "b1 " << b1 << endl;
28
+
29
+ cout << "b2 " << b2 << endl;
30
+
31
+
32
+
33
+ b1 = b1 & b2;
34
+
35
+ // b1 &= b2;
36
+
37
+
38
+
39
+ cout << "AND&) " << b1 << endl;
40
+
41
+
42
+
43
+ cout << "==2 ) " << b1.count() << endl;
44
+
45
+
46
+
47
+ getchar();
48
+
49
+ }
50
+
51
+
52
+
53
+ // https://c.keicode.com/cpp/bitwise-operations.php
54
+
55
+ ```
56
+
57
+
58
+
59
+ 参考:[ビット演算](https://c.keicode.com/cpp/bitwise-operations.php)
60
+
61
+
62
+
63
+
64
+
1
65
  参考:[ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜](https://qiita.com/drken/items/7c6ff2aa4d8fce1c9361)
2
66
 
3
67
 

1

リンク追加

2020/09/15 16:18

投稿

mjk
mjk

スコア303

test CHANGED
@@ -1,3 +1,7 @@
1
+ 参考:[ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜](https://qiita.com/drken/items/7c6ff2aa4d8fce1c9361)
2
+
3
+
4
+
1
5
  よく調べていませんが直感でいけそうかなと思ったので。
2
6
 
3
7
  取り急ぎ思いつきですみません。