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

Số pandigital là gì. Phương pháp tiếp cận để tìm Số pandigital bằng C ++

Số Pandigital - Trong Toán học, một số Pandigital là một số nguyên trong một cơ số nhất định có trong số các chữ số có nghĩa của nó, mỗi chữ số được sử dụng trong cơ số ít nhất một lần.

Số Pandigital là các số nguyên trong đó mỗi chữ số được sử dụng làm cơ số ít nhất một lần.

Ví dụ:1245678 là số pandigital.

Phương pháp tiếp cận để giải quyết vấn đề này

  • Hãy Nhập một số và một cơ số.

  • Kiểm tra cơ số nếu nó nhỏ hơn 2 và lớn hơn 10, sau đó trả về 1, nếu không, hãy kiểm tra số liệu nó có phải là pandigital hay không.

  • Hàm Integer is_pandigital (long long, int base) lấy một số và một cơ số làm đầu vào.

  • Đếm cho tất cả các chữ số có trong số và tăng số lượng.

  • Lặp lại tất cả các chữ số để xem có chữ số nào trống không, vì vậy trả về false.

  • Hàm Integer is_zeroless (long long, int base) nhận đầu vào và số và cơ sở của nó làm Đầu vào và trả về nếu tìm thấy chữ số.

  • Lặp lại tất cả các chữ số để tìm xem có chữ số nào trống không thì sẽ trả về 0.

  • Cuối cùng, hàm check_number (số dài dài, cơ số int) lấy số và cơ số của nó làm đầu vào. Hàm trả về giá trị 1 nếu tìm thấy khác 0.

Ví dụ

#include <iostream.h>"
using namespace std;
int is_pandigital(long long number, int base);
int is_zeroless_pandigital(long long number, int base);
int check_number(long long number, int base);
int main(){
   long long number;
   int base;
   cin>>"Enter a number";
   cout<<number;
   cin>>"Enter Base";
   cout<<base;
   if(base < 2 || base > 10){
      return 1;
   }
   if(check_number(number, base)){
      if(is_pandigital(number, base)){
         cout<<number<<""<<base;
      }
      else{
         cout<< number<< "is not a pandigital number in base"<<base;
      }
      if(is_zeroless_pandigital(number, base)){
         cout<<number<< "is a zeroless pandigital number in base"<<base;
      }
      else{
         cout<<number<< "is not a zeroless pandigital number in base" <<base;
      }
   }
   else{
      cout<<number<< "is not a valid number in base"<<base;
   }
   return 0;
}
int is_pandigital(long long number, int base){
   /* define an array to store the count of all digits */
   int digits[10], i;
   memset(digits, 0, sizeof(int)*10);
   /* for every digit in number, then increment count by one */
   while(number > 0){
      int digit = number % 10;
      ++digits[digit];
      number /= 10;
   }
   /* iterate over all the digits to see if there's an empty one, if so return false */
   for(i = 0; i < base; ++i)
      if(digits[i] == 0)
         return 0;
   /* if no empty digit found, return true */
   return 1;
}
int is_zeroless_pandigital(long long number, int base){
   /* define an array to store the count of all digits */
   int digits[10], i;
   memset(digits, 0, sizeof(int)*10);
   /* for every digit in number, increment count by one */
   while(number > 0){
      int digit = number % 10;
      if(digit == 0) return 0;
         ++digits[digit];
      number /= 10;
   }
   /* iterate over digits to see if there's an empty one, if so return false */
   for(i = 1; i < base; ++i)
   if(digits[i] == 0)
      return 0;
   /* if no empty digit found, return true */
   return 1;
}
/* This function checks if given number is valid in the given base */
int check_number(long long number, int base){
   while(number > 0){
      int digit = number % 10;
      if(digit > base - 1) return 0;
         number /= 10;
   }
   return 1;
}

Đầu ra

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

Enter a number: 45
Enter base(min:2 to max-10):10
45 is not a valid number.