RATIO - RTE(nonzero return code) 발생 (Python)

  • dongie
    dongie

    RATIO 문제에서 런타임 오류 - 에러 메세지: RTE(nonzero return code)가 발생합니다.
    개인 환경에선 모든 input에 맞게 결과값이 나오는데, 알고스팟 에러 메세지만 보고서는 디버깅을 할 수 없어서 질문 드립니다.

    • 참고: IDEOne에서 실행해본 코드 - 결과는 아무 문제 없었음
    • 혹시 문제의 아래 부분(숫자의 크기 제한)을 handling하지 않은 것이 에러의 원인이려나요?
      • N, M이 주어졌을 때, Z를 올리기 위한 최소한의 연승횟수가 필요한지 구하는 프로그램을 작성하라. 여기서 답이 되는 연승횟수는 2,000,000,000 이하라고 가정한다.
      • N(1<=N<=1,000,000,000)를 의미하며
    from __future__ import division
    import math
    
    def findX(N,M,Z):
        X = math.ceil((N*Z+N-100*M)/(99-Z))
        if X <= 0:
            return -1
        else:
            return int(X)
    
    for i in range(input()):
        s=raw_input().split(' ')
        N=float(s[0])
        M=float(s[1])
        Z = int(M/N * 100)
        print findX(N,M,Z)
    


    8년 전
3개의 댓글이 있습니다.
  • seico75
    seico75

    1
    100 99
    Divide by Zero 에러가 나서 그런 것이 아닐까요?


    8년 전 link
  • dongie
    dongie

    @seico75 님 감사합니다.
    아래 코드로 수정하였는데, 모든 케이스를 다 다루지 않았는지 오답이 나네요.....흠 ㅠ 미궁 속으로 빠져듭니다.

    from __future__ import division
    import math
    
    def findX(N,M,Z):
        if Z == 99 or Z == 100:
            return -1
        else:
            X = math.ceil((N*Z+N-100*M)/(99-Z))
            if X <= 0: 
                return -1
            else:
                return int(X)
    
    for i in range(input()):
        s=raw_input().split()
        N=float(s[0])
        M=float(s[1])
        if(N == 0):
            print 1
        else:
            Z = int(100*M/N)
            print findX(N,M,Z)

    8년 전 link
  • seico75
    seico75

    위에 답안은 정답 나오는데요? 마지막에 테스트하신 것과 위의 것이 한군데 다르네요..


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.