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

C++의 예가 있는 Disarium Number?

<시간/>

해당 위치로 거듭제곱된 숫자의 합이 숫자 자체와 동일한 숫자를 디사륨 숫자라고 합니다.

noOfDigits(int num) 함수는 숫자를 받아 한 자리만 남아 있는 동안 계속해서 숫자를 10으로 나누어 자릿수를 반환합니다. 각 반복에서 숫자 변수는 숫자 추적을 유지하기 위해 증가하고 while 루프가 끝나면 반환됩니다.

int noOfDigits(int num){
   int digits = 0;
   int temp = num;
   while (temp){
      temp= temp/10;
      digits++;
   }
   return digits;
}

다음으로 isDisarium(int num)은 숫자를 받아 Disarium 숫자인지 확인하는 부울 함수입니다. 그것은 숫자 모드 10으로 가장 오른쪽 숫자를 취하고 숫자 시스템의 숫자 자리에 전원을 공급합니다. 숫자에 전원을 공급한 결과가 합계에 추가됩니다. while 루프는 더 이상 숫자가 남지 않을 때까지 실행됩니다. 합계가 num과 같으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

isDisarium(int num){
   int digits = noOfDigits(num);
   int sum = 0;
   int temp = num;
   while (temp){
      int rightDigit = temp%10;
      sum = sum + pow(rightDigit, digits--);
      temp = temp/10;
   }
   return (sum == num);
}

예시

숫자가 disarium number인지 확인하는 다음 구현을 살펴보겠습니다.

#include<iostream>
#include<math.h>
using namespace std;
int noOfDigits(int num){
   int digits = 0;
   int temp = num;
   while (temp){
      temp= temp/10;
      digits++;
   }
   return digits;
}
bool isDisarium(int num){
   int digits = noOfDigits(num);
   int sum = 0;
   int temp = num;
   while (temp){
      int rightDigit = temp%10;
      sum = sum + pow(rightDigit, digits--);
      temp = temp/10;
   }
   return (sum == num);
}
int main(){
   int num = 518;
   if( isDisarium(num))
      cout <<num<<" is a Disarium Number"<<endl;
   else
      cout << num<<" is not a Disarium Number"<<endl;
   return 0;
}

출력

위의 코드는 다음 출력을 생성합니다 -

518 is a Disarium Number