AIZU ONLINE JUDGE

AOJ ITP2 10_B(Bit Operation II)を解く

AOJ_ITP2_10_B

Aizu Online Judge(AOJ)が提供している「プログラミング応用」(ITP2)の10_B問題をC++で解いてみました。

ITP2では、「プログラミングのための基礎ライブラリを獲得します」とあります。トピック#10では、ビットセットI(bitset)を学びます。

問題(10_B: Bit Operation II)

問題はリンク先をご覧ください。

AOJ ITP2 10_B問題: Bit Operation II

bitset クラスについて学びます。

bitset クラスについて

以下は、cpprefjp 様の記事を参考にさせていただきました。

今回使う bitset クラスの演算子は、10_A で紹介しています。

C++ プログラム例(ITP2 10_B)

32ビット整数が2つ与えられます。その整数を2進数に変換して、以下の操作を行い、その結果をビット列として出力します。

  • AND:2つの整数のビット論理積を求める。
  • OR:2つの整数のビット論理和を求める。
  • XOR:2つの整数のビット排他的論理和を求める。

整数を引数に bitset クラスのコンストラクタを呼び出し(11、12行目)、演算を行った結果を出力します(14ー16行目)。

#include <iostream>
#include <bitset>

using namespace std;

int main()
{
	unsigned long int a, b;
	cin >> a >> b;

	bitset<32> bs_a(a);
	bitset<32> bs_b(b);

	cout << (bs_a & bs_b) << endl;
	cout << (bs_a | bs_b) << endl;
	cout << (bs_a ^ bs_b) << endl;

	return 0;
}

上記プログラムは、AOJ で「AC(Accepted=正解)」と判定されました。

最後に

前回に続き、bitset クラスで使える演算子を試しました。

引き続き、ITP2 の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA