ধারণা
M পূর্ণসংখ্যার দুটি প্রদত্ত অ্যারের সাপেক্ষে, একটি অ্যারে C অনুমান করুন, যেখানে i-th পূর্ণসংখ্যা হবে d*a[i] + b[i] যেখানে d যেকোন নির্বিচারে বাস্তব সংখ্যা হিসাবে নির্দেশিত হয়। আমাদের কাজ হল ডি প্রদর্শন বা প্রিন্ট করা যাতে অ্যারে সি-তে সর্বাধিক সংখ্যক শূন্য থাকে এবং শূন্যের সংখ্যাও প্রিন্ট করে।
ইনপুট
a[] = {15, 40, 45} b[] = {4, 5, 6}
আউটপুট
Value of d is: -0.133333 The number of zeros in array C is: 1 If we choose d as -0.133333 then we get one zero in the array C which is the maximum possible.
পদ্ধতি
উপরের সমস্যাটি সমাধান করতে আমরা নিচের উল্লিখিত পদক্ষেপগুলি অনুসরণ করি -
- আমরা সমীকরণটিকে d =-b[i]/a[i] হিসাবে পুনরায় লিখি
- d-এর মান পেতে যেকোনো বাস্তব সংখ্যার সবচেয়ে বড় সংখ্যা গণনা করতে হ্যাশ-টেবিল প্রয়োগ করুন।
- এখন, আমরা উপসংহারে পৌঁছেছি যে শূন্যের সংখ্যা হবে বৃহত্তম গণনা + (জোড়ের সংখ্যা a[i] এবং b[i] যেখানে উভয়ই 0)।
উদাহরণ
// C++ program to implement the above // approach #include <bits/stdc++.h> using namespace std; // Shows function to find the value of d // and find the number of zeros in the array void findDandZeros1(int a[], int b[], int m){ // Shows hash table unordered_map<long double, int> mpp1; int count1 = 0; // Performs iteration for i-th element for (int i = 0; i < m; i++) { // Now if both are not 0 if (b[i] != 0 && a[i] != 0) { long double val1 = (long double)(-1.0 * b[i]) / (long double)(a[i]); mpp1[val1] += 1; } // Now if both are 0 else if (b[i] == 0 && a[i] == 0) count1 += 1; } // Used to find max occurring d int maxi1 = 0; for (auto it : mpp1) { maxi1 = max(it.second, maxi1); } // Used to print the d which occurs max times for (auto it : mpp1) { if (it.second == maxi1) { cout << "Value of d is: " << it.first << endl; break; } } // Used to print the number of zeros cout << "The number of zeros in array C is: " << maxi1 + count1; } // Driver code int main(){ int a[] = { 15, 40, 45 }; int b[] = { 4, 5, 6 }; int m = sizeof(a) / sizeof(a[0]); findDandZeros1(a, b, m); return 0; }
আউটপুট
Value of d is: -0.133333 The number of zeros in array C is: 1