ポイントカード機能その2
問題
とあるお肉屋さんではポイントカードが導入されていて、買い物をするたびに購入金額に応じたポイントがたまります。 加算されるポイントは次の 3 つのルールに従って決定されます。
1. 通常は購入金額の1%(小数点以下切り捨て)とする
2. 4のつく日は購入金額の4%(小数点以下切り捨て)とする
3. 29のつく日は購入金額の29%(小数点以下切り捨て)とする
最終的にポイントカードに何ポイントあるか出力してください。(小数点以下切り捨て)
入力値について
入力は以下のように与えられます。
- N #各買い物の数
- day_1 plice_1 #1回目の買い物の日付 day_1 日, 購入金額 plice_1 円
- day_2 plice_2 #2回めの買い物の日付 day_2 日, 購入金額 plice_2 円
- …
- day_N plice_N #N枚目のレシートの日付 day_N 日, 購入金額 plice_N 円
1行目には今月分の買い物の回数を表す整数 N が入力されます。
続く N 行には各買い物の情報が入力されます。
与えられる入力値
5
2 1000
14 2000
15 4000
24 3000
29 29000
期待する出力
8660
コードと解説
#1行目の入力値を受け取る
n = gets.to_i
#ポイントは最初は0なので0で初期化する
point = 0
#n回繰り返す
n.times do |i|
#2行名以降の入力値を受け取る
day,plice = gets.split.map(&:to_i)
#4のつく日の処理を書く
if day == 4 || day == 14 || day == 24
#4%なので先に計算してから.floorで小数点以下を切り捨てる
point += (plice.to_f / 100) * 4.floor
#29日の処理を書く
elsif day == 29
#29%なので先に計算してから.floorで小数点以下を切り捨てる
point += (plice.to_f / 100) * 29.floor
#普通の日は1%なので先に計算してから.floorで小数点以下を切り捨てる
else point += (plice.to_f / 100).floor
end
end
#ポイントを出力する
puts point.to_i
https://paiza.io/ja/projects/new
↑こちらにコピペして「実行」で確認できます。
↓このような出力結果になっていればOKです。







