@Nabetani 鍋谷武典さんからの問題

@Nabetani
鍋谷武典
1の並びで小さい方から
みんな大好き2進数の問題です。2進数で表現した時に1の連なりが…
![]() |
この問題は、自動採点です。テストケースを全てPASSすると、正解となります。 |
---|---|
![]() |
挑戦ページで選択できる言語なら、どの言語でも構いません。 |
![]() |
何度でも挑戦できます。 ●第一線の企業・エージェントがあなたの解答を見てスカウト! |
CodeIQ運営事務局からのお願いと連絡事項
- 解答送信の有無を問わず、模範解答のネタばれにつながるような各種行為、別人による不正解答は、固くお断り申し上げます。
- 解答は個人が特定されない状態でリクルーティング活動等を行う企業に公開されます。また、企業は個人を特定できない状態で解答を見てメッセージを送る場合があります。予めご了承ください。
- 上記以外の目的で、あなたのご登録情報を企業に公開することはいたしません。ご安心ください。
- 評価フィードバックが届いたら、ご登録のメールアドレスにお知らせします。
@Nabetani 鍋谷武典さんからの問題
【概要】
数を2進数で表します。
このとき、1 の連なりの最大の長さを
F(n)
と書きます。
例えば
21(10進数) = 10101(2進数) なので、F(21)=1
45(10進数) = 101101(2進数) なので、F(45)=2
23(10進数) = 10111(2進数) なので、F(23)=3
504(10進数) = 111111000(2進数) なので、F(504)=6
です。
さて、X と Y という2つの数を与えます。
1以上の整数 n について、F(n)=X である n のうち、小さい方から Y 番目の数を求めてください。
X=3, Y=29 の場合を考えます。
F(n)=X であるような数を列挙すると、
順序 | n(2進数) | n(10進数) |
---|---|---|
1 | 111 | 7 |
2 | 1110 | 14 |
3 | 10111 | 23 |
⁞ | ||
27 | 1110111 | 119 |
28 | 10000111 | 135 |
29 | 10001110 | 142 |
となりますので、求める数は 142 となります。
入力は
3,29
のような感じです。
X と Y がコンマ区切りで並んでいます。
出力は、Y番目の値を普通に 10 進数で出力してください。
入力が 3,29
の場合、出力は
142
となります。
- X は、1以上32以下の整数です。
- Y は、1以上1000以下の整数です。
- 不正な入力に対処する必要はありません。
■挑戦言語は下記のプログラム言語選択で選択可能なものであれば何でもOKです。
- 自分の書いたプログラム言語を選択
- 解答欄にソースコードを記入
- 送信前に「提出前に確認」ボタンをクリック(構文エラーがないかどうかチェックできます)
- 「解答コードは正常に実行されました」というメッセージを確認の上、「解答を送信」ボタンで解答してください。
■この問題にはテストケースが10件用意されています。すべてに通れば正解です!
- 採点は「ideone」を使ってプログラムを実行し、標準入力および標準出力のテストケースと照合して正誤を判定します
- 各言語の標準入力と標準出力はこちらを参考にしてください
※なおCodeIQで使用しているideoneは企業版のため、webで公開されているコンシューマー版ideoneとは対応言語・バージョン・挙動が異なる場合があります。
企業版ideoneの対応バージョンは、「提出前チェック」の結果とともに表示されます。
![]() |
挑戦ページで選択できる言語なら、どの言語でも構いません。 |
---|---|
![]() |
何度でも挑戦できます。 ●第一線の企業・エージェントがあなたの解答を見てスカウト! |
CodeIQ運営事務局からのお願いと連絡事項
- 解答送信の有無を問わず、模範解答のネタばれにつながるような各種行為、別人による不正解答は、固くお断り申し上げます。
- 解答は個人が特定されない状態でリクルーティング活動等を行う企業に公開されます。また、企業は個人を特定できない状態で解答を見てメッセージを送る場合があります。予めご了承ください。
- 上記以外の目的で、あなたのご登録情報を企業に公開することはいたしません。ご安心ください。
- 評価フィードバックが届いたら、ご登録のメールアドレスにお知らせします。