トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.419 直角三角形
■■■問題■■■
長さが正の3本の棒を使って直角三角形を作る。
2本の棒の長さはわかっているので、もう1本の棒の長さを求めよ。
使う棒はできるだけ短く済ませたいので、最小のものを求めよ。
■■■入力■■■
a b
1行に2本の棒の長さが空白区切りで与えられる。
入力は全て整数で与えられる。
1 <= a,b <= 1000
■■■出力■■■
直角三角形を作るためのもう1本の棒の最小の長さを出力せよ。
絶対誤差、または相対誤差が(10の-6乗)以下なら正解となる。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("4 5");
//3.0000000000
}
else if (InputPattern == "Input2") {
WillReturn.Add("5 3");
//4.0000000000
}
else if (InputPattern == "Input3") {
WillReturn.Add("3 4");
//2.6457513111
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
double[] wkArr = InputList[0].Split(' ').Select(X => double.Parse(X)).ToArray();
double A = wkArr.Max();
double B = wkArr.Min();
double C;
if (A > B) { //斜辺がAの場合
C = Math.Sqrt(A * A - B * B);
}
else { //斜辺がCの場合
C = Math.Sqrt(A * A + B * B);
}
Console.WriteLine(C);
}
}
解説
a,bの長いほうが斜辺になる場合と
a,bが等しくて、二等辺三角形になる場合で
場合に分けてます。