কম্পিউটার

C++ এ অ্যারের গুণফলের পেছনের শূন্যের সংখ্যা গণনা করুন


আমাদেরকে N আকারের ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে Arr[] দেওয়া হয়েছে। লক্ষ্য হল অ্যারের সমস্ত উপাদানের গুণফলের পিছনে থাকা শূন্যের সংখ্যা গণনা করা।

আমরা প্রতিটি সংখ্যার গুণনীয়ক গণনা করে এটি করব। আমরা 2 এবং 5 কে প্রতিটি সংখ্যার গুণনীয়ক হিসাবে গণনা করব কারণ 2 এবং 5 এর গুণফল হল 10 যা 1 অনুগামী 0 দেয়। শেষ পর্যন্ত যেটি সংখ্যাটি ছোট হয় তা গুণফলের শূন্যের অনুগামী গণনা দেয়। যদি আমাদের 4 2 এবং 6 5 থাকে তাহলে গুণফলটিতে 4টি অনুগামী শূন্য থাকবে - 2*2*2*2*5*5*5*5*5*5=250000

উদাহরণ দিয়ে বোঝা যাক।

ইনপুট

Arr[] = { 2, 5, 10, 15, 20, 25, 100 }

আউটপুট

Number of trailing zeroes : 6

ব্যাখ্যা

Factors 2 and 5 of each element of Arr[]:
Arr[0] = 2 : 2 twos=1, fives=0
Arr[1] = 5 : 5 twos=1, fives=1
Arr[2] = 10 : 2*5 twos=2, fives=2
Arr[3] = 15 : 3*5 twos=2, fives=3
Arr[4] = 20 : 2*2*5 twos=4, fives=4
Arr[5] = 25 : 5*5 twos=4, fives=6
Arr[6] = 100 : 2*2*5*5 twos=6, fives=8
Count of 2 is less so trailing zeroes will be 6.

ইনপুট

Arr[] = { 10,10,10,10,10 }

আউটপুট

Number of trailing zeroes : 5

ব্যাখ্যা

Factors 2 and 5 of each element of Arr[]:
Arr[0] = 10 : 2*5 twos=1, fives=1
Arr[1] = 10 : 2*5 twos=2, fives=2
Arr[2] = 10 : 2*5 twos=3, fives=3
Arr[3] = 10 : 3*5 twos=4, fives=4
Arr[4] = 10 : 2*5 twos=5, fives=5
Count of 2 and 5 is equal so trailing zeroes will be 5.

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

  • আমরা N..

    দৈর্ঘ্যের ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে নিই
  • ফাংশন trailZeros(int arr[],int n) অ্যারে এবং n কে ইনপুট হিসাবে নেয় এবং সমস্ত উপাদানের গুণফলের পিছনের শূন্যের সংখ্যা প্রদান করে।

  • শূন্য সংখ্যার জন্য প্রাথমিক পরিবর্তনশীল গণনা 0 হিসাবে নিন।

  • গুণনীয়ক হিসাবে 2 এবং 5 এর গণনা হিসাবে দুটি চলক দুই এবং পাঁচ নিন।

  • লুপের জন্য ব্যবহার করে ট্রাভার্স অ্যারে।

  • প্রতিটি উপাদানের জন্য যদি এটি 2 বা 5 দ্বারা বিভাজ্য হয় তাহলে দুই এবং পাঁচটি বৃদ্ধি করুন এবং 2 বা 5 দ্বারা হ্রাস করুন৷

  • লুপের শেষে দুই এবং পাঁচের মান চেক করুন যেটি ছোট।

  • দুটির কম দিয়ে গণনা শুরু করুন।

  • ফলাফল হিসাবে গণনা ফেরত দিন।

উদাহরণ

#include <bits/stdc++.h<
using namespace std;
int trailZeros(int arr[],int n){
   int count = 0;
   int twos = 0;
   int fives = 0;
   for (int i = 0; i < n; i++){
      while(arr[i]%2==0 || arr[i]%5==0){
         if(arr[i]%2==0){
            arr[i]=arr[i]/2;
            twos++;
         }
         if(arr[i]%5==0){
            arr[i]=arr[i]/5;
            fives++;
         }
      }
   }
   count=twos<fives?twos:fives;
   return count;
}
int main(){
   int Arr[]={ 12, 5 , 15, 8, 100, 40 };
   int Length= sizeof(Arr)/sizeof(Arr[0]);
   cout <<endl<< "Number of trailing zeroes : "<<trailZeros(Arr,Length);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Number of trailing zeroes : 5

  1. C++ এ একটি আয়তক্ষেত্রে বর্গক্ষেত্রের সংখ্যা গণনা করুন

  2. C++ এ একটি অ্যারেতে প্রতি K’th মৌলিক সংখ্যার গুণফল

  3. C++ এ সেট বিটের গণনা অনুসারে একটি অ্যারে সাজান

  4. C++ এ একটি পণ্য অ্যারে ধাঁধা?