কম্পিউটার

C++ এ c[i] =d*a[i] + b[i] হিসাবে তৈরি অ্যারে c[]-এ শূন্যের সংখ্যা সর্বাধিক করতে d খুঁজুন


ধারণা

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

  1. C++ ব্যবহার করে পঞ্চভুজ পিরামিডাল নম্বর খুঁজুন

  2. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে স্টপিং স্টেশনের সংখ্যা খুঁজুন

  4. পাইথনে c[i] =d*a[i] + b[i] হিসাবে তৈরি অ্যারে c[] তে শূন্যের সংখ্যা সর্বাধিক করতে d খুঁজুন