본문 바로가기
Algorithm

[구현/실수오차] 백준 15128 Congruent Numbers - 파이썬(Python)

by jangThang 2022. 9. 28.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    15128번: Congruent Numbers

    Each input will consist of a single test case. Note that your program may be run multiple times on different inputs. Each test case will consist of a single line with four integers p1, q1, p2 and q2 (1 ≤ p1,q1,p2,q2 ≤ 100,000) where p1/q1 and p2/q2 are

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     직각삼각형의 두 변의 길이가 p1/q1, p2/q2로 주어집니다. 직각삼격형의 면적이 정수인지 판별해야 합니다.

     

     

     

    3. 코드

    # 입력
    p1, q1, p2, q2 = map(int, input().split())
    
    # 삼각형의 면적
    res = (p1/q1) * (p2/q2) / 2
    
    # 면적이 정수?
    if res.is_integer():
        print(1)
    else:
        print(0)

     정수판별은 is_integer() 함수를 쓰거나, int(res) == res로 할 수 있습니다. 하지만 위 코드는 "70%에서 틀렸습니다."가 뜹니다. 실수 오차라는 게 있는 듯합니다.

     

     

    # 입력
    p1, q1, p2, q2 = map(int, input().split())
    
    # 삼각형의 면적
    res = p1*p2/q1/q2/2
    
    # 면적이 정수?
    if res.is_integer():
        print(1)
    else:
        print(0)

     그대신, p1*p2를 먼저 곱하고 나눠주면 "맞았습니다."가 뜹니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글