প্যানডিজিটাল নম্বর − গণিতে, একটি প্যানডিজিটাল সংখ্যা হল একটি পূর্ণসংখ্যা যা একটি প্রদত্ত বেসে তার উল্লেখযোগ্য সংখ্যাগুলির মধ্যে প্রতিটি সংখ্যা অন্তত একবার বেসে ব্যবহৃত হয়৷
প্যানডিজিটাল সংখ্যা হল এমন পূর্ণসংখ্যা যেখানে প্রতিটি সংখ্যা অন্তত একবার বেস হিসাবে ব্যবহৃত হয়।
উদাহরণস্বরূপ, 1245678 একটি প্যানডিজিটাল নম্বর।
এই সমস্যা সমাধানের পদ্ধতি
-
একটি সংখ্যা এবং একটি ভিত্তি ইনপুট নিন৷
-
বেস চেক করুন যদি এটি 2-এর কম এবং 10-এর বেশি হয় তবে 1 ফেরত দিন অন্যথায় নম্বরটি প্যানডিজিটাল কিনা তা পরীক্ষা করুন।
-
একটি পূর্ণসংখ্যা ফাংশন is_pandigital(long long n, int base) ইনপুট হিসাবে একটি সংখ্যা এবং একটি বেস নেয়৷
-
সংখ্যায় উপস্থিত সমস্ত অঙ্কের জন্য গণনা করুন এবং গণনা বৃদ্ধি করুন।
-
একটি খালি আছে কিনা তা দেখতে সমস্ত অঙ্কের উপর পুনরাবৃত্তি করুন, তাই মিথ্যা ফেরত দিন।
-
একটি পূর্ণসংখ্যা ফাংশন is_zeroless (লম্বা লং n, int বেস) ইনপুট এবং সংখ্যা এবং এর বেসকে ইনপুট হিসাবে নেয় এবং অঙ্কটি পাওয়া গেলে রিটার্ন করে।
-
সমস্ত সংখ্যার উপর পুনরাবৃত্তি করে খুঁজে বের করুন যদি কোন সংখ্যা খালি থাকে তাহলে 0 ফেরত আসবে।
-
অবশেষে, ফাংশন check_number(দীর্ঘ লং সংখ্যা, int base) ইনপুট হিসাবে সংখ্যা এবং এর বেস নেয়। ফাংশনটি 1 প্রদান করে যদি অন্যথায় 0 খুঁজে পাওয়া যায়।
উদাহরণ
#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;
} আউটপুট
উপরের কোডটি চালানোর ফলে নিম্নলিখিত আউটপুট −
উৎপন্ন হবেEnter a number: 45 Enter base(min:2 to max-10):10 45 is not a valid number.