본문으로 바로가기

C071:直角三角形

category TIL/Algorithm 2024. 5. 1. 23:03

あなたは、全ての辺の長さが整数である直角三角形を数えることになりました。

しかし、この条件を満たす三角形全てを数えるときりがないので、以下の条件を満たす三角形だけを数えることにしました。

・調べる直角三角形は直角が右下にある。
・全ての辺は整数である。
・ある与えられた二つの整数 M, N が与えられ、M より長さが小さい底辺、N より長さが小さい高さをもつ。

評価ポイント10回のテストケースで、正答率、実行速度、メモリ消費量をはかり得点が決まります。
より早い回答時間で提出したほうが得点が高くなります。
  1. 複数のテストケースで正しい出力がされるか評価(+50点)
  2. 解答までの速さ評価(+50点)
入力される値

入力は以下のフォーマットで与えられます。

M N
  • ・2 つの整数 M, N がこの中に半角スペース区切りで与えられます。
  • ・入力は 1 行となり、末尾に改行が 1 つ入ります。

それぞれの値は文字列で標準入力から渡されます。標準入力からの値取得方法はこちらをご確認ください
期待する出力

斜辺も整数である直角三角形の個数を整数で出力してください。
出力最終行の末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

  • ・1 ≦ M ≦ 30
  • ・1 ≦ N ≦ 30
入力例1
10 10
出力例1
4
入力例2
20 20
出力例2
12

0

長さが小さい高さ

長さが小さい底辺

右下(みぎした)

数えるときりがないので

条件を満たす

数える

直角三角形

# 10 10
N, M = map(int, input().split())
# print(N, M)
count = 0
for i in range(1, M):
    for s in range(1, N):
        c = (i**2 + s**2)**0.5
        if c == int(c):
            count += 1
print(count)

'TIL > Algorithm' 카테고리의 다른 글

C137:取締役選任  (0) 2024.05.01
C131:ユニークな部屋番号  (0) 2024.04.30
C133:雷危険地域  (0) 2024.04.28
C092:工場のベルトコンベア  (0) 2024.04.27
C032:お得な買い物 ???  (0) 2024.04.26