>  기사  >  ProjectEuler 질문 17: 이 코드 줄을 변경했는데 작동해야 한다고 생각했는데 대답이 크게 바뀌었습니다.

ProjectEuler 질문 17: 이 코드 줄을 변경했는데 작동해야 한다고 생각했는데 대답이 크게 바뀌었습니다.

WBOY
WBOY앞으로
2024-02-13 20:51:08866검색

php 편집기 Apple은 ProjectEuler 문제 17에서 흥미로운 상황에 직면했습니다. 그는 코드 한 줄을 변경한 후 코드가 제대로 작동해야 한다고 생각했음에도 불구하고 대답이 극적으로 변경되었음을 발견했습니다. 이 질문은 그의 호기심을 자극했고, 그는 이유를 탐구하고 해결책을 찾기 시작했습니다. 이 이야기는 도전과 생각으로 가득 차 있어 편집자의 대답을 기대하게 만든다.

질문 내용

저는 프로젝트 오일러 질문 17을 진행하고 있습니다. 1부터 1000까지 쓰여진 숫자의 총 문자 수를 세는 프로그램을 작성해야 합니다. 공백과 하이픈은 무시됩니다. 문제 설명에 따르면 수백 개의 숫자에 "and"(342)가 포함되어 있습니다. 내 코드는 100의 배수(추가 "합계"를 계산하는 경우)를 제외하고 대부분의 경우 작동합니다. 예를 들어, 600은 "six 백 and"로 계산됩니다. 이로 인해 내 답변이 27(100자리 중 3자리)에서 벗어났습니다. 이것이 거의 올바른 해결책입니다:

으아아아

이 결과는 21151의 출력이 되며, 이는 예상 출력인 21124와 27이 다릅니다. 변수 num는 디버깅 목적으로 사용됩니다.

루프의 줄 중 하나를 변경하려고 시도하고 추가 문을 추가했습니다.

으아아아

이 업데이트된 버전을 실행한 후 출력은 18487입니다. 이 차이가 왜 그렇게 눈에 띄는지 잘 모르겠고 이것이 어디서 오는지 이해하고 싶습니다. 나는 처음에 그것이 삼항 연산자 때문이라고 생각했습니다. 왜냐하면 그것에 대한 지식이 제한되어 있기 때문입니다. 또한 코드를 보다 효율적으로 만들기 위한 제안도 환영합니다. 인쇄하기 전에 sum-27을 입력하고 싶은데, 조금 부정행위인 것 같아요 :). 감사해요!

해결 방법

다른 사람들이 귀하의 질문에 대한 의견에서 말했듯이 귀하의 문제는 코드가 100의 배수인 숫자를 처리하는 방식입니다. 항상 hundred를 추가하고 hundredum>만 추가하지 마세요. 실제로 귀하는 질문에 자신을 다음과 같이 표시했습니다.

아래 코드에서는 if삼항 연산자 대신 명시적인 문을 사용하고 있습니다. 왜냐하면 읽을 때 코드를 더 쉽게 이해할 수 있다고 믿기 때문입니다. 이것이 귀하의 질문에 게시된 코드에 대한 유일한 변경 사항입니다.

으아아아

위 코드를 실행하면 다음과 같은 결과가 나타납니다.

으아아아

질문의 코드에서 이것이 예상되는 답변이라고 (코드 주석에) 작성하셨습니다.

위 내용은 ProjectEuler 질문 17: 이 코드 줄을 변경했는데 작동해야 한다고 생각했는데 대답이 크게 바뀌었습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제