এই সমস্যায়, আমাদেরকে N পূর্ণসংখ্যা নিয়ে গঠিত একটি অ্যারে ভাজক [] দেওয়া হয়েছে যা একটি সংখ্যার ভাজক। আমাদের কাজ হল এর ভাজক থেকে সংখ্যা বের করা।
ভাজক অ্যারে 1 এবং সংখ্যা অন্তর্ভুক্ত করে না।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
divisors[] = {3, 25, 5, 15}
আউটপুট
75
ব্যাখ্যা
The number 75 has divisors {3, 25, 5, 15}
সমাধান পদ্ধতি
সমস্যা সমাধানের জন্য, সংখ্যাটির ক্ষুদ্রতম এবং বৃহত্তম ভাজক ব্যবহার করে আমাদের সংখ্যাটি বের করতে হবে।
Num = smallest * largest
এর জন্য, আমাদের অ্যারে ভাজকগুলিকে সাজাতে হবে[] এবং তারপর অ্যারের 1ম এবং শেষ সূচকে উপাদানগুলির গুণফল খুঁজে বের করতে হবে৷
সংখ্যা সংখ্যার জন্য, সংখ্যার সমস্ত গুণনীয়ক খুঁজুন। এবং পরীক্ষা করুন সংখ্যার ভাজকগুলি ভাজক অ্যারের মতোই। যদি হ্যাঁ, নম্বর ফেরত দিন। অন্যথায়, রিটার্ন -1, সংখ্যা নির্দেশ করে খুঁজে পাওয়া যাবে না।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include <bits/stdc++.h> using namespace std; int findNumberFromDiv(int divisors[], int n){ sort(divisors, divisors + n); int num = divisors[0] * divisors[n - 1]; int numDiv[2*n]; int count = 0; for (int i = 2; i * i <= num; i++){ if (num % i == 0){ numDiv[count] = i; count ++ ; numDiv[count] = num/i; count++; } } sort(numDiv, numDiv + count); if (count != n) return -1; else{ for (int i = 0; i < count; i++) { if (divisors[i] != numDiv[i]) return -1; } } return num; } int main(){ int divisors[] = { 3, 25, 5, 15 }; int n = sizeof(divisors) / sizeof(divisors[0]); cout<<"The number is "<<findNumberFromDiv(divisors,n); return 0; }
আউটপুট
The number is 75