メンズワキガ対策専門ブランドD AGICA【ディーアジカ】

 

■競技プログラミング AtCoder Beginner Contest 133 A問題

めげてないで努力してみましょう。

コンテストをよく見てみると「AtCoder Beginner Contest」というのがありました。先日飛びついたのは「AtCoder Grand Contest」でしたので、そりゃ難しいに決まってます (^_^;)

 

AtCoder Beginner Contest 133 の A 問題「T or T」です。

 

問題文
私たちは N 人で旅行しようとしており、その交通手段として電車とタクシーがあります。

電車を使うと 1 人あたり A 円かかります。

タクシーを使うと N 人で B 円かかります。

全員の交通費の合計は最小でいくらになるでしょうか。

 

なんか算数の問題っぽくってよさげなんですが、またしても問題の意味がわからない。「全員の交通費の合計は最小でいくらになるでしょうか」ってどーゆーこと?

 

例 1 を見てみましょう。人数 N が 4 人、電車 A が 2 円でタクシー B が 9 円とすると、電車が 4 人× 2 円で 8 円、タクシーが 4 人で 9 円ですから、全員の交通費の合計の最小値は 8 円、だそうです。や、安すぎる (^_^;)

えーとつまり、「交通費が安くなる交通手段はどっちか」ってことか。20 人いたらタクシーだと 5 台必要だから… なんてこと考えなくていいのね?

うぅ、なんかあまりに現実離れしていて頭がついていかない… orz

 

例 2 では、N=4 A=2 B=7 ですから、電車が 8 円、タクシーが 7 円で、出力は 7 。

例 3 では、N=4 A=2 B=8 で、電車もタクシーも同額の 8円で、出力は 8 となります。

 

わかりましたよ。こうしましょう。

 

  1. 数値の入力
    scanf() で変数にそれぞれ人数、電車の運賃、タクシーの運賃を入力します。
  2. 範囲の判定
    入力値が範囲外かどうかを判定して、範囲外の時は Error! を表示してプログラムを終了 (return 1;) します。たぶん、この制約の範囲内でプログラムを考えればいいよってことで、エラー処理はしなくてもいいみたいですけど。
  3. 最小値の計算と抽出
    最初は安いほうの運賃で分岐してどちらかを表示させる方法を考えたのですが、処理部分と表示部分は分けたほうがわかりいいよねってことで分けました。
    まず電車賃を最小値 lowestFare としておき、次にタクシー代と比較して、もしタクシー代の方が安ければ lowestFare を更新するという単純な方法です。
  4. 最小値の表示
    printf() で最小値 lowestFare を表示します。

 

で、こんなふうになりました。

 

/*  AtCoder Beginner Contest 133 A - T or T
    2019.07.24 by meyon  */

 

#include <stdio.h>

 

int main()
{
  // data input and judgment
  int N;    // number of people
  int A;    // train fare
  int B;    // taxi fare
  scanf("%d %d %d", &N, &A, &B);
  if(N<1 || N>20 || A<1 || A>50 || B<1 || B>50) {
    printf("Error!¥n");
    return 1;
  }

 

  // extract the lowest fare
  int lowestFare = N * A;
  if(lowestFare > B) {
    lowestFare = B;
  }

 

  // display the lowest fare
  printf("%d¥n", lowestFare);

 

  return 0;
}

 

なんだかね、やれそうな気がしてきましたよ (^_^;)

 

2019.07.26 追記

過去問題でも提出できることを知りました。

で、提出してみましたら、結果「AC」でしたよ。めでたい \(^o^)/

 


コメント
コメントする








   
この記事のトラックバックURL
トラックバック

■calendar

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
<< August 2019 >>

■search this site.

■recommend

毎日貯まるポイントサイト ECナビ

■recommend

* 楽天ROOM *

■Twitter

■recommend

■recommend

■selected entries

■categories

■archives

■recent comment

■recent trackback

■links

■profile

■others

■mobile

qrcode

■powered

無料ブログ作成サービス JUGEM