1000以下の3つの正の整数が入力されます。それぞれの長さを3辺とする三角形が直角三角形である場合はYES、そうでない場合にはNOを出力するプログラム。
辺1(整数)
辺2(整数)
辺3(整数)
YES または NO
3
4
5
YES
これは「a*a + b*b = c*c」をabcを取り替えながら判定します。中学3年生でならうピタゴラスの定理です。
#include <stdio.h> int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); a*=a; b*=b; c*=c; if(a == b+c || b== a+c || c==a+b){ printf("YES\n"); }else{ printf("NO\n"); } return 0; }
import java.io.*; class a05{ public static void main(String args[])throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int a,b,c; a = Integer.parseInt(br.readLine()); b = Integer.parseInt(br.readLine()); c = Integer.parseInt(br.readLine()); a*=a; b*=b; c*=c; if(a+b==c || b+c==a || c+a==b){ System.out.println("YES"); }else{ System.out.println("NO"); } } }
Imports System Module m Sub Main() Dim a, b, c As Integer a = Int32.Parse(Console.ReadLine()) b = Int32.Parse(Console.ReadLine()) c = Int32.Parse(Console.ReadLine()) a *= a b *= b c *= c If a + b = c Or b + c = a Or c + a = b Then Console.WriteLine("YES") Else Console.WriteLine("NO") End If End Sub End Module
一応図形問題に分類されるでしょうが、初級問題なので解けるようになっておきましょう。あらかじめ全ての辺を2乗しておくと便利です、なお、sqrtは遅いのでこの方がプログラムも早く実行されます。パソコン甲子園ではどうでも良いことですが。
ただし、C言語で「math.h」を読み込む手間が省けますし、他の言語でも標準演算しか利用しないのでこの方がよいと私は思います。