Weird를 python으로 작성하였는데, RTE라는 결과를 받았습니다.

  • egaoneko
    egaoneko

    제 컴퓨터 환경에서는 문제 없이 동작하여 올렸더니 RTE라는 결과를 받았습니다.
    여러가지 변경해보고 테스트해보았지만 어디서 문제가 일어나는지 찾기가 힘드네요.

    import sys
    
    rl = lambda:sys.stdin.readline()
    C = int(rl())
    input = list()
    
    for i in xrange(C):
        s = int(rl())
    
        if s < 2 or s > 500000:
            print("wrong input")
            exit()
        input.append(s)
    
    def divisor(x):
        return [ i for i in xrange(1, x) if x%i==0]
    
    def weird(x):
        l = divisor(x)
    
        sum=0
        for i in l:
            sum += i
    
        # check(l,x)
        if x > sum:
            return "not weird"
        elif not check(l, x):
            return "not weird"
    
        return "weird"
    
    def check(l, x):
        s = 2**len(l)
        ll = len(l)
        for i in xrange(1, s):
            b = i2b(i, ll)
            cl = list()
            for j in xrange(ll):
                if int(b[(ll-1)-j]) == 1:
                    cl.append(l[j])
            sum = 0
            for j in cl:
                sum += j
    
            # print(i,b,sum)
            if sum == x:
                return False
            elif sum > x:
                return True
    
        return False
    
    def i2b(i, l):
        s=''
        while i > 0:
            s = str(i&1) + s
            i = i>>1
        return s.zfill(l)
    
    
    for i in xrange(C):
        #weird(input[i])
        print(weird(input[i]))
    

    9년 전
1개의 댓글이 있습니다.
  • JongMan
    JongMan

    알고리즘을 설명해 주시지 않으면 답을 드리기 어렵습니다.


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