1094号:棒
質問する
1094号:棒
に近づく
1000000
で、Xcmを作ります.マイコード
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(br.readLine());
int count = 0;
for (int i = 0; i <= 6; i++) {
if ((x & (1<<i)) != 0) count++;
}
System.out.println(count);
}
}
for
ループのビット数は64であり、ループ内で(x & (1<<i))
と判断すればよい.📌 ビットマスク?
整数のバイナリ表示を資料構造にする手法です.
長所
map<vector<bool>, int>
をint[]
に変更できます.えんざん
演算コード2つの整数a、bビットAND演算a&b 2つの整数a、bビットOR演算a|b 2つの整数a、bビットXOR演算a^b整数aのビットNOT演算結果
ビットマスクセットの使用例
あるピザ屋には0から19の番号の20種類の具があり、注文時に具を入れるか入れないかを選択することができます.これにより,1つのピザの情報は20種類の要素のみの集合となり,ビットマスクで表現できる.
int fullPizza = (1 << 20) - 1;
toppings |= (1 << p);
if (toppings & (1 << p)) System.out.println("peperoni is in");
toppings &= ~(1 << p);
toppings ^= (1 << p);
2つのセットint added = (a | b); // a와 b의 합집합
int intersection = (a & b); // a와 b의 교집합
int removed = (a & ~b); // a에서 b를 뺀 차집합
int toggled = (a ^ b); // a와 b중 하나에만 포함된 원소들의 집합
public int bitCount(int x) {
if (x == 0) return 0;
return x % 2 + bitCount(x/2);
}
またはInteger.bitCount(toppings)
検索2の修理演算を用いて、以下のように編成する.
int firstTopping = (toppings & -toppings);
またはInteger.numberOfTrailingZeros(toppings)
toppings &= (toppings - 1);
for (int subset = pizza; subset; subset = ((subset-1) & pizza)) {
// subset은 pizza의 부분집합
}
Reference
Reference
この問題について(1094号:棒), 我々は、より多くの情報をここで見つけました https://velog.io/@songs4805/BOJ1094번-막대기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol