1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Bランク・スキルチェック過去問題セット(言語選択)
  4. 問題一覧 C++編
  5. 名刺バインダー管理 C++編

Bランク・スキルチェック過去問題セットのサムネイル
名刺バインダー管理 C++編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

あなたはこれまでに出会った人たちの名刺を集めています。
名刺は、複数枚のファイルを閉じることができるバインダーに保存されています。

1枚のファイルには、n個のポケットが横に並んでおり、表と裏の両面から名刺を眺めることができます。
このため、1つのポケットには、2枚の名刺が背中合わせに入っています。

各名刺には1から順に通し番号が付いているため、この番号の順に名刺を眺めることができるようにポケットに入っています。
1番からn番の名刺は、1枚目のファイルの表面から見たときに左詰めに並んでおり、
n+1番から2n番の名刺は、1枚目のファイルの裏面から見たときに左詰めに並んでいます。
2枚目以降のファイルにも同様に名刺が並んでいます。



上の図はn=3のときのバインダーの様子を表しています。
各ポケットの数字はそのポケットで眺めることができる名刺の番号で、
括弧で表される数字はそのポケットを反対の面から見たときに眺めることができる名刺の番号です。

名刺の番号mが与えられるので、その名刺の裏側の名刺の番号を表示するプログラムを作成してください。
ただし、番号mの名刺の裏面には必ず名刺が存在するものとしてください。

入力される値

n m


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

m番の名刺の裏側の番号

条件

1 ≦ n ≦ 100,000
1 ≦ m ≦ 100,000

入力例1

3 1

出力例1

6

入力例2

3 6

出力例2

1

入力例3

3 8

出力例3

11

入力例4

157 1518

出力例4

1309

問題一覧へ戻る

ページの先頭へ戻る