Computer >> Máy Tính >  >> Lập trình >> C ++

Số Disarium với các ví dụ trong C ++?

Một số mà tổng các chữ số của nó được cung cấp với vị trí tương ứng của nó bằng với chính số đó được gọi là số disarium.

Hàm noOfDigits (int num) lấy số và trả về số chữ số bằng cách liên tục chia số đó cho 10 trong khi chỉ còn một chỗ duy nhất. Trên mỗi lần lặp, biến chữ số được tăng lên để giữ cho các chữ số theo dõi và được trả về sau khi vòng lặp while kết thúc.

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

Tiếp theo, isDisarium (int num) là một hàm Boolean lấy số và kiểm tra xem đó có phải là số Disarium hay không. Nó lấy chữ số tận cùng bên phải của mod số 10 và lũy thừa nó thành các chữ số trong hệ thống số. Kết quả bằng cách cấp nguồn cho số sau đó được cộng vào tổng. Vòng lặp while chạy cho đến khi không còn chữ số nào. Nếu tổng bằng num thì trả về true, ngược lại trả về 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);
}

Ví dụ

Chúng ta hãy xem cách triển khai sau đây để kiểm tra xem một số có phải là số disarium hay không.

#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;
}

Đầu ra

Đoạn mã trên sẽ tạo ra kết quả sau -

518 is a Disarium Number