내 프로그램이 프로젝트 오일러 17에 대해 올바른 답을 인쇄하지 않는 이유는 무엇입니까?

하 리쉬 샨 카르 23

프로젝트 오일러 문제 17 :

1에서 5까지의 숫자가 1, 2, 3, 4, 5와 같이 단어로 쓰여지면 3 + 3 + 5 + 4 + 4 = 총 19 개의 문자가 사용됩니다.

1부터 1000 (1,000)까지의 모든 숫자를 단어로 작성하면 몇 개의 문자가 사용됩니까?

참고 : 공백이나 하이픈은 계산하지 마십시오. 예를 들어, 342 (3 백사 십이)는 23 개의 문자를 포함하고 115 (백 십오)는 20 개의 문자를 포함합니다. 숫자를 쓸 때 "and"를 사용하는 것은 영국식 사용법을 따릅니다.

무작위로 생성 된 숫자로 내 코드를 테스트 할 때마다 해당 숫자를 단어로 작성하면 올바른 문자 수를 출력합니다. 그러나 제공된 테스트 케이스로 실행하려고 할 때 내 대답이 잘못되었습니다. 답변 : 18451

Words = {0: "", 1:"one", 2:"two", 3:"three", 4:"four", 5:"five", 6:"six", 7:"seven", 8:"eight", 9:"nine", 10:"ten", 11:"eleven", 12:"twelve", 13:"thirteen", 14:"fourteen", 15:"fifteen", 16:"sixteen",17:"seventeen", 18:"eighteen", 19:"nineteen", 20:"twenty", 30:"thirty", 40:"forty", 50:"fifty", 60:"sixty", 70:"seventy", 80:"eighty", 90:"ninety", 100:"onehundred", 200:"twohundred", 300:"threehundred", 400:"fourhundred", 500:"fivehundred", 600:"sixhundred", 700:"sevenhundred", 800:"eighthundred", 900:"ninehundred", 1000:"onethousand"}

count = 0
for i in range(1, 1001):
    c = 1
    arr = []
    if(i<=20 or (len(str(i))==2 and i%10==0)):
        count += len(Words.get(i))

    elif(i%100==0):
        count += len(Words.get(i))

    else:
        while(i!=0):
            z = i%10
            arr.append(z*c)
            i = i//10
            c*=10

        if(len(arr)==3 and arr[1]==10):
            arr[1]=arr[1]+arr[0]
            arr[0]=0
        for f in arr:
            count+=len(Words.get(f))
    
print(count)
Sercan

귀하의 코드를 디버깅했습니다. 질문에서 115 (1 백 15)에는 20 개의 문자가 있다고 언급했지만 코드에서 "and"를 고려하지 않았기 때문에 프로그램은 17 개로 계산됩니다. 모든 "and"를 포함하면 891 * 3 + 18451 = 21124가 표시됩니다. 내가 수학으로 착각하지 않기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관