Aランク・スキルチェック過去問題セットのサムネイル
「paizaラーニングのお得な使い方」を解くために:part4 Objective-C編(paizaランク A 相当)

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

問題

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

あなたは paiza ラーニングでプログラミング学習を始めようとしています。

次の表のように、paiza ラーニングの有料プランには 3 つの利用プランがあり、プランごとに利用期間と料金が決まっています。



ただし、キャンペーンにより、初めて有料プランを利用するときに、1 ヶ月プランを利用し、解約せずに 2 ヶ月目を利用すると、2 ヶ月目の料金が無料になります。
また、各プランの料金の払い戻しはできないため、12 ヶ月プランを 11 ヶ月だけ利用して途中で解約した場合でも、7,200 円の料金が発生します。

あなたは A ヶ月と B ヶ月の間に解約をはさんで有料プランを利用しようとしています。
A ヶ月を利用し、解約してから、さらに B ヶ月を利用するものとします。

このとき、それぞれの期間で利用するプランをうまく組み合わせて、合計料金を最小化してください。


・利用例

A = 5, B = 14 の場合を考えます。

・ A(5 ヶ月):1 ヶ月プランを 5 回(キャンペーン対象)
・ B(14 ヶ月):12 ヶ月プラン + 1 ヶ月プランを 2 回

→ 合計金額は 12,480 円 となります。

入力される値

入力は以下のフォーマットで与えられます。

A B


・ 有料プランへの加入月数 A, B が与えられます。入力は 1 行となり、末尾に改行が 1 つ入ります。


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

・ 1 行目では、A ヶ月 → B ヶ月の順でプランを利用したときの最小の料金を出力してください。
・ 2 行目では、A ヶ月分で利用するプランを順に半角スペース区切りで出力してください。
・ 3 行目では、B ヶ月分で利用するプランを順に半角スペース区切りで出力してください。
  ・ ここで表示するプランとは、X ヶ月プランなら X のことです。
  ・ B = 0 の場合は、3 行目に 0 を出力してください。

末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ A ≦ 1,000
・ 0 ≦ B ≦ 1,000

入力例1

10 20

出力例1

18880
2 6 1 1
2 12 6

入力例2

5 12

出力例2

10720
2 1 1 1
12

入力例3

123 456

出力例3

347360
2 12 12 12 12 12 12 12 12 12 12 1
12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12

問題一覧へ戻る

  1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Aランク・スキルチェック過去問題セット(言語選択)
  4. 問題一覧 Objective-C編
  5. 「paizaラーニングのお得な使い方」を解くために:part4 Objective-C編
ページの先頭へ戻る