C++ の動作確認をしてみた(712)

C++の練習を兼ねて, AtCoder Regular Contest 138 の 問題D (Differ by K bits) を解いてみた.

■感想.
1. 問題Dは, 方針が見えなかったので, 解説および解説プログラムを参考に実装して, AC版に到達出来た.
2. 但し, AC版に, なかなか到達できなかったため, 調査したところ, XOR基底の計算方法が, 誤っていたと推測し, XOR基底の計算部分は, 解説プログラムを参考にして, 差し替えた(※).
※ popcount が K となる Nbit整数を一つ取って来て, これを, 1bitずつスライドする方法は, 正しくないとのこと.
現象としては, 数列 b の サイズが, 期待した値よりも小さくなり, 数列 b の作成時に, 重複要素が発生することから推定した.
3. 個人的には, 特殊な性質を持つ数列を抽出するロジックが, 非常に面白く感じたとともに, XOR基底の計算方法について, 新たな知識が増えたと思う.
4. 引き続き, 時間を見つけて, 過去問の学習を進めていきたいと思う.

本家のサイト AtCoder Regular Contest 138 解説 の 各リンク を ご覧下さい.

■C++版プログラム(問題D/AC版).

■参照サイト
大和証券プログラミングコンテスト2022 Spring(AtCoder Regular Contest 138)

カテゴリーC++

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください