पैंडिजिटल नंबर - गणित में, एक पैंडिजिटल नंबर एक पूर्णांक है जो दिए गए बेस में अपने महत्वपूर्ण अंकों में उस बेस में उपयोग किए गए प्रत्येक अंक को कम से कम एक बार उपयोग करता है।
पैंडिजिटल नंबर वे पूर्णांक हैं जिनमें प्रत्येक अंक को बेस के रूप में कम से कम एक बार उपयोग किया जाता है।
उदाहरण के लिए, 1245678 एक पैंडिजिटल नंबर है।
इस प्रॉब्लम को हल करने का दृष्टिकोण
एक नंबर और एक बेस का इनपुट लें।
बेस की जांच करें यदि यह 2 से कम और 10 से अधिक है तो 1 लौटाएं अन्यथा जांचें कि नंबर पैंडिजिटल है या नहीं।
एक पूर्णांक फंक्शन is_pandigital(long long n, int base) एक नंबर और एक बेस को इनपुट के रूप में लेता है।
नंबर में मौजूद सभी अंकों की गिनती करें और गिनती बढ़ाएं।
सभी अंकों पर पुनरावृति करें यह देखने के लिए कि क्या कोई खाली है, तो false लौटाएं।
एक पूर्णांक फंक्शन is_zeroless(long long n, int base) इनपुट और नंबर और उसके बेस को इनपुट के रूप में लेता है और लौटाता है कि अंक मिला है या नहीं।
सभी अंकों पर पुनरावृति करते हुए ढूंढें कि क्या कोई अंक खाली है तो 0 लौटाएगा।
अंत में, फंक्शन check_number(long long number, int base) नंबर और उसके बेस को इनपुट के रूप में लेता है। फंक्शन 1 लौटाता है यदि मिल जाए अन्यथा 0।
उदाहरण
#include <iostream>
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;
cout << "Enter a number: ";
cin >> number;
cout << "Enter Base: ";
cin >> base;
if (base < 2 || base > 10) {
return 1;
}
if (check_number(number, base)) {
if (is_pandigital(number, base)) {
cout << number << " is a pandigital number in base " << 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) {
int digits[10], i;
memset(digits, 0, sizeof(int) * 10);
while (number > 0) {
int digit = number % 10;
++digits[digit];
number /= 10;
}
for (i = 0; i < base; ++i)
if (digits[i] == 0)
return 0;
return 1;
}
int is_zeroless_pandigital(long long number, int base) {
int digits[10], i;
memset(digits, 0, sizeof(int) * 10);
while (number > 0) {
int digit = number % 10;
if (digit == 0) return 0;
++digits[digit];
number /= 10;
}
for (i = 1; i < base; ++i)
if (digits[i] == 0)
return 0;
return 1;
}
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;
}
आउटपुट
उपरोक्त कोड चलाने पर निम्न आउटपुट उत्पन्न होगा -
Enter a number: 45 Enter base(min:2 to max-10):10 45 is not a valid number.