D問題をC++とPythonで解いてみました。ABC341は、2024年2月17日21:00に実施されました。紹介はこちらに、プログラミングの方針はこちらに記事があります。829)問題はリンク先をご覧ください。two解の二分探索で解くことができます。整数を値にとる以下の関数を考えます。整数に切り捨てた値を表します。最小公倍数を表します。割り切れる数を表します。求めることができます。二分探索では、最小となる境界の値を求めることができます。解の単調性があり最小値を求めるため、「解の二分探索」が使えます。このブログでも何回も紹介しています。以下の2つを実装します。設定して、解の二分探索をする。このコードは、パターン化できている。プログラム例(ABC341D)上記の方針で実装します。用意しました(8ー15行目)。設定します(31、32行目)。定数倍が解の上限になることが分かります。厳密な証明は、公式解説で提示されています。残りは定番コードです。これはほとんどの問題で使いまわせます(33ー40行目)。以下が、C++プログラムとなります。解の二分探索の定番コードの背景色を変更しました。0;}AC(Accepted=正しいプログラム)と判定されました。版も基本的な考え方は同じです。呼び出しています(2、16行目)。midprint(ok)こちらも「AC」と判定されました。両方で割れない解がでる可能性があると誤解していました。どちらかで割れることは、コンテスト直後に気づきました。結果的にくやしい問題となりましたが、学ぶことができました。問題を紹介していきます。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目です上に表示された文字を入力してください。Contest)記事一覧ソフトウェア技術者アナダパンチ組込み製品の開発に従事しているソフトウェア技術者です。仕事でソフトウェア開発に従事しながら、趣味でもプログラミングを楽しんでいます。