কম্পিউটার

C++ এ প্রদত্ত ক্রিয়াকলাপের সাথে অ্যারেটিকে একটি একক পূর্ণসংখ্যাতে হ্রাস করুন


ইনপুট হিসাবে একটি পূর্ণসংখ্যা পরিবর্তনশীল সংখ্যা দেওয়া হয়েছে। আসুন আমরা যেকোন ক্রমে 1 থেকে সংখ্যা রেঞ্জের উপাদান ধারণকারী একটি বিন্যাস বিবেচনা করি। যদি আমরা একটি অ্যারেতে একটি অপারেশন নম্বর-1 বার করি যেমন

  • আমরা অ্যারে থেকে দুটি উপাদান A এবং B নির্বাচন করি

  • অ্যারে থেকে A এবং B সরান

  • অ্যারেতে A এবং B বর্গের যোগফল যোগ করুন

আমরা শেষ পর্যন্ত একটি একক পূর্ণসংখ্যার মান পাব; লক্ষ্য হল সেই উপাদানটির জন্য সর্বোচ্চ সম্ভাব্য মান খুঁজে বের করা।

অগ্রাধিকার সারি ব্যবহার করা

  • শেষ ফলাফল সর্বাধিক করার জন্য, আমাদের A এবং B বেছে নিতে হবে যাতে তারা সর্বাধিক হয়।

  • সর্বাধিক A এবং B খুঁজে পেতে, আমরা এটির ভিতরে উপাদানগুলির মান সংরক্ষণ করতে একটি অগ্রাধিকার সারি ব্যবহার করব৷

  • একটি অগ্রাধিকার সারিতে উপাদানগুলিকে হ্রাসকারী ক্রমে সঞ্চয় করে৷

  • শীর্ষস্থানীয় উপাদানটি মূল্যের মধ্যে সর্বশ্রেষ্ঠ এবং আরও অনেক কিছু। সুতরাং দুটি উপাদান পপ করার পরে আমরা তাদের স্কোয়ারগুলিকে আবার সারিতে ঠেলে দেব।

  • পছন্দসই ফলাফল পেতে নম্বরটি পপ এবং পুশ করবে - 1 বার।

উদাহরণ

ইনপুট - সংখ্যা=2

আউটপুট − অ্যারে হ্রাসের পরে একক উপাদান:5

ব্যাখ্যা − ধরুন আমাদের অ্যারেতে [ 1 2]

এলিমেন্ট আছে

অগ্রাধিকার সারিতে সন্নিবেশ করার পর-:2 1

A=5, B=4 :A 2 +B 2 =1+4=5

শেষ উপাদান:5

ইনপুট − সংখ্যা=5

আউটপুট − অ্যারে হ্রাসের পরে একক উপাদান:5

ব্যাখ্যা − ধরুন আমাদের অ্যারেতে উপাদান আছে [ 5 1 2 4 3]

অগ্রাধিকার সারিতে সন্নিবেশ করার পর-:5 4 3 2 1

A=5, B=4 :A 2 +B 2 =25+16=41 :41 3 2 1

A=41, B=3 :A 2 +B 2 =1681+9=1690 :1690 2 1

A=1690, B=2 :A 2 +B 2 =1681+4=2856104 :2856104 1

A=2856104 , B=1 :A 2 +B 2 =1187163712+1=1187163713 :1187163713

শেষ উপাদান:1187163713

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

এই পদ্ধতিতে আমরা বিন্যাসের উপাদানগুলিকে হ্রাসকারী ক্রমে সংরক্ষণ করতে সারিতে অগ্রাধিকার দেব। শীর্ষ দুটি সর্বশ্রেষ্ঠ উপাদান পপ করুন এবং উভয়ের বর্গক্ষেত্রের যোগফল আবার সেই সারিতে পুশ করুন। শুধুমাত্র একটি মান বাকি না হওয়া পর্যন্ত এটি করুন৷

  • ইনপুট ভেরিয়েবল নম্বর নিন।

  • দীর্ঘ দীর্ঘ পূর্ণসংখ্যা হিসাবে ফলাফলের জন্য ডেটা টাইপ নিন - lli

  • ফাংশন reduceArray(int Num) ইনপুট নম্বর নেয় এবং উপরের ক্রিয়াকলাপগুলি ব্যবহার করে গণনা করা সর্বাধিক একক পূর্ণসংখ্যা প্রদান করে৷

  • pQueue হিসাবে একটি অগ্রাধিকার সারি নিন।

  • একটি সময় লুপ ব্যবহার করে 1 থেকে N নম্বর সহ pQueue পপুলেট করুন।

  • যখন i<=Num, i pQueue এ চাপুন

  • এখন pQueue তে পূর্ণসংখ্যা 1 থেকে N ক্রমহ্রাসমান ক্রমে এবং আকার হল N.

  • এখন পিকিউতে কিছুক্ষণ লুপ ব্যবহার করে এর সাইজ>=1.

    না হওয়া পর্যন্ত অতিক্রম করুন
  • var1=pQueue.top() হিসাবে সর্বাধিক নিন এবং এটি পপ করুন।

  • পরবর্তী সর্বোচ্চটি var2=pQueue.top() হিসাবে নিন এবং এটি পপ করুন।

  • var1 কে এর বর্গ হিসাবে এবং var2 কে এর বর্গ হিসাবে সেট করুন।

  • var1+var2 আবার pQueue এ চাপুন।

  • যখন লুপ শেষে, উপরের উপাদানটি ফেরত দিন।

  • মূল ভিতরে ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
#define lli long long int
int reduceArray(int Num){
   priority_queue<lli> pQueue;
   int i=1;
   while(i<=Num){
      pQueue.push(i);
      i=i+1;
   }
   while (pQueue.size() > 1) {
      lli var1 = pQueue.top();
      pQueue.pop();
      lli var2 = pQueue.top();
      pQueue.pop();
      var1=var1*var1;
      var2=var2*var2;
      pQueue.push(var1+var2);
   }
   return pQueue.top();
}
int main(){
   int Number = 5;
   cout<<"Single element after array reduction: "<<reduceArray(Number);
   return 0;
}

আউটপুট

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

Single element after array reduction: 1187163713

  1. C++ এ অ্যারের আকার অর্ধেক কমিয়ে দিন

  2. C++ এ একটি প্রদত্ত পূর্ণসংখ্যা অ্যারের সমস্ত স্বতন্ত্র উপাদান প্রিন্ট করুন

  3. C++ এ প্রদত্ত ক্রিয়াকলাপের সাথে অ্যারের যোগফল সর্বাধিক করা হচ্ছে

  4. C++ এ প্রদত্ত পার্থক্যের সাথে একটি জোড়া খুঁজুন