トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.236 エンオウ茶
■■■問題■■■
コーヒーと紅茶を A:B の割合で混ぜてエンオウ茶を作ります。
X ミリリットルのコーヒーと Y ミリリットルの紅茶があるとき、
最大で何ミリリットルのエンオウ茶を作ることができますか。
■■■入力■■■
A B X Y
●1 <= A,B,X,Y <= 1000
●入力される値はすべて整数である。
■■■出力■■■
作ることのできるエンオウ茶の最大量を出力し、末尾で改行せよ。
絶対誤差または相対誤差が(10の-6乗)以下のとき正答とみなされる。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("1 1 150 200");
//300
//コーヒー150ミリリットルと紅茶150ミリリットルから
//300ミリリットルのエンオウ茶を作ることができます。
}
else if (InputPattern == "Input2") {
WillReturn.Add("4 6 150 200");
//333.333333333333
//コーヒー400/3 ミリリットルと
//紅茶200ミリリットルから
//1000/3 ミリリットルのエンオウ茶を作ることができます。
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
decimal[] wkArr = InputList[0].Split(' ').Select(X => decimal.Parse(X)).ToArray();
decimal RateCoffee = wkArr[0];
decimal RateKoutya = wkArr[1];
decimal Coffee = wkArr[2];
decimal Koutya = wkArr[3];
//コーヒーを全て使う場合
decimal NeedKoutya = Coffee / RateCoffee * RateKoutya;
if (NeedKoutya <= Koutya) {
Console.WriteLine(Coffee + NeedKoutya);
return;
}
//紅茶を全て使う場合
decimal NeedCoffee = Koutya / RateKoutya * RateCoffee;
Console.WriteLine(Koutya + NeedCoffee);
}
}
解説
コーヒーを全て使う場合と、紅茶を全て使う場合に
場合分けしてます。