주어진 수의 밑수에서 정수론에 정의된 수학 숫자는 첫 번째 자연수의 자릿수 합이 두 번째 수의 자릿수 합과 같도록 다른 자연수의 완전 세제곱과 같은 자연수입니다. 엠> (위키피디아).
Henry Dudeney가 번호를 찾았습니다. . 수학적 공식 이다 -
여기서 정수 n이 주어집니다. 우리의 임무는 주어진 숫자 n이 친구 숫자인지 여부를 확인하는 것입니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력: N =17592
출력: 아니요
설명:
주어진 번호는 더드니 번호가 아닙니다.
해결 방법 -
해결책은 dudeney 수의 기본 정의에 있습니다. 숫자는 숫자의 세제곱근이 해당 자릿수의 합과 같다는 사실에 기반한 듀니 숫자입니다. .
알고리즘 -
1단계: n이 완벽한 정육면체인지 확인하세요.
2.1단계: 예인 경우 n의 세제곱근 =n의 자릿수의 합인지 확인하십시오.
2.2.1단계: 예인 경우 번호는 Dudeney 번호입니다.
2.2.2단계: NO인 경우 해당 번호는 Dudeney 번호가 아닙니다.
2.2단계: 아니오인 경우 해당 번호는 Dudeney 번호가 아닙니다.
알고리즘의 작동을 설명하는 C++ 프로그램 −
예시
#include <bits/stdc++.h> using namespace std; int calcDigitSum(int n){ int digitSum = 0; int digitVal; while (n > 0) { digitVal = n % 10; digitSum += digitVal; n /= 10; } return digitSum; } int checkDudeney(int N) { int cubeRoot = int( round( cbrt(N) ) ); if(pow(cubeRoot, 3.0) != N){ return 0; } int sumOfDigit = calcDigitSum(N); if (cubeRoot != sumOfDigit) return 0; return 1; } int main() { int N = 104323; cout<<"The number "<<N; if (checkDudeney(N)) cout<<" is a dudeney number."; else cout<<" is not a dudeney number."; return 0; }
출력 -
The number 104323 is not a dudeney number.