Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 Dudeney 숫자

<시간/>

주어진 수의 밑수에서 정수론에 정의된 수학 숫자는 첫 번째 자연수의 자릿수 합이 두 번째 수의 ​​자릿수 합과 같도록 다른 자연수의 완전 세제곱과 같은 자연수입니다. 엠> (위키피디아).

Henry Dudeney가 번호를 찾았습니다. . 수학적 공식 이다 -

C++의 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.