> 백엔드 개발 > C++ > 숫자가 뮌하우젠 번호인지 확인하세요.

숫자가 뮌하우젠 번호인지 확인하세요.

PHPz
풀어 주다: 2023-09-05 22:01:07
앞으로
1217명이 탐색했습니다.

숫자가 뮌하우젠 번호인지 확인하세요.

뮌하우젠 수는 독특한 성질을 지닌 홀수입니다. 숫자의 합(제곱)이 원래 숫자와 같을 경우 숫자는 뮌하우젠 수로 간주됩니다. 이 숫자는 흔하지 않으며 그 중 많은 숫자가 알려져 있지 않습니다. 00 = 0의 정의를 사용하면 0도 뮌하우젠 수로 간주될 수 있습니다.

다음 문서에서는 뭉크하우젠 수의 이러한 특성을 염두에 두고 숫자가 뭉크하우젠 수인지 확인하는 방법을 제공합니다.

문제 설명

현재 작업은 주어진 정수 n이 뮌히하우젠 수인지 확인하는 것입니다. 즉, 각 숫자를 자신의 거듭제곱으로 올리고 합하면 결과가 원래 숫자와 같습니다. 프로그램은 그것이 Münchhausen 수이면 true를 반환하고, 그렇지 않으면 false를 반환해야 합니다.

으아아아

설명 - (1의 1승) = 11 = 1.

결과 숫자가 원래 숫자와 같으므로 1이 뮌하우젠 수입니다.

으아아아

설명 − (1의 1승) + (6의 6승) + (0의 0승) + (3의 3승) = 11 + 66 + 00 + 33 ≠ 1603.

이것은 46684와 같습니다. 결과 숫자는 원래 숫자와 동일하지 않으므로 1603은 뮌하우젠 숫자가 아닙니다.

으아아아

설명 − (3의 3승) + (4의 4승) + (3의 3승) + (5의 5승) = 33 + 44 + 33 + 55 = 3435.

결과 숫자가 원래 숫자와 같으므로 3435가 뮌하우젠 숫자입니다.

으아아아

설명 − (4의 4승) + (3의 3승) + (3의 3승) + (5의 5승) = 44 + 33 + 33 + 55 ≠ 4335.

결과 숫자가 원래 숫자와 다르기 때문에 4335는 뮌헨 숫자가 아닙니다.

해결 방법

제공된 숫자가 뮌히하우젠 숫자인지 확인하려면 각 숫자를 더한 결과가 원래 숫자와 같은지 알아야 합니다. 다음 방법을 사용하여 합계를 계산하고 결과가 원래 숫자와 일치하는지 확인할 수 있습니다.

알고리즘

방법에는 다음 단계가 포함됩니다. -

  • 주어진 숫자를 개별 숫자로 나누세요.

  • 각 숫자를 그 자체로 올리세요.

  • 결과를 추가하세요.

  • 합계를 원래 숫자와 비교하세요.

  • 답변을 보여주세요.

의사코드

함수 is_munchhausen()

  • 초기화 합계 = 0

  • 임시 초기화 = n

  • 동시에 (온도 > 0)

    초기화 숫자 = 온도 % 10

    sum = sum + pow(숫자, 숫자)

    온도=온도/10

  • 반환 합계==n

함수 main()

  • n 초기화

  • if (is_munchhausen())

    cout

  • 기타

    cout

  • 인쇄물

예: C++ 프로그램

프로그램은 is_munchhausen() 함수를 호출하여 숫자가 Münchhausen 숫자인지 여부를 확인합니다. 이 함수는 n과 동일한 임시 변수와 다른 변수 sum을 사용하여 각 숫자의 결과 합계를 저장합니다.

루프를 반복할 때마다 '%' 연산자를 사용하여 temp의 각 한 자릿수에 액세스합니다. 숫자의 가장 오른쪽 숫자를 반환합니다. 그런 다음 해당 숫자는 자체적으로 증가하여 총계에 추가됩니다. 각 반복이 끝나면 temp를 10으로 나누어 다음 숫자에 액세스합니다. 루프는 온도 > 0이 될 때까지 실행됩니다.

으아아아

출력

으아아아

시간 및 공간 복잡성 분석

Time Complexity - O(log n) 시간 복잡도. 여기서 n은 입력 매개변수의 값입니다. 이는 is_munchhausen() 함수에서 while 루프의 반복 횟수가 주어진 숫자의 자릿수에 따라 달라지기 때문입니다. 이는 log(n) 밑수 10에 비례합니다. 이 함수는 주 함수에서 한 번만 호출되므로 프로그램의 전체 복잡도는 log(n)에 비례합니다.

공간 복잡성 - O(1). 이 함수는 고정 메모리를 사용하여 정수 변수 sum과 temp를 저장하므로 공간 복잡도는 입력 인수의 크기에 관계없이 일정합니다.

결론

요약하자면, 뮌하우젠 수는 자신의 수의 합으로 표현되는 고유한 수입니다. 그것들은 흔하지 않으며 그것들을 찾는 것이 어려운 작업이 될 수 있습니다. 이 글에서 논의된 솔루션은 보조 공간을 사용하지 않고 숫자가 Münchhausen인지 로그 시간으로 쉽게 확인할 수 있는 방법을 제공합니다. 이 글에서는 다양한 예를 통해 뮌하우젠 수의 개념을 심도있게 설명합니다. 포함된 C++ 코드를 사용하여 주어진 숫자가 Münchhausen 숫자인지 빠르게 확인하세요.

위 내용은 숫자가 뮌하우젠 번호인지 확인하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿