কম্পিউটার

C++ এ সমান সমষ্টি এবং XOR


এই সমস্যায়, আমরা একটি পূর্ণসংখ্যা n দেওয়া হয়. আমাদের কাজ হল i =0 থেকে n পর্যন্ত পূর্ণসংখ্যার গণনা খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা, যেখানে যোগফল XOR এর সমান অর্থাৎ (n+i) =(n^i)।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট: n =4

আউটপুট: 4

ব্যাখ্যা:

0 থেকে n,

পর্যন্ত i-এর সমস্ত মান বিবেচনা করে

i =0, 4 + 0 =4, 4^0 =4
i =1, 4 + 1 =5, 4^1 =5
i =2, 4 + 2 =6, 4^2 =6
i =3, 4 + 3 =7, 4^3 =7
i =4, 4 + 4 =8, 4^4 =0
গণনা =4

সমাধান পদ্ধতি:

একটি সহজ সমাধান হল n এবং i এর যোগফল এবং n এবং i এর xor এর মান বের করা। এই উভয় মানের তুলনা করুন এবং তারপর সেই মানগুলি গণনা করুন যার জন্য তারা সমান৷

অ্যালগরিদম:

ধাপ 1: i =0 থেকে n পর্যন্ত সকল মানের জন্য লুপ।

ধাপ 1.1: (n + i) এর মান খুঁজুন।

ধাপ 1.2: (n^i) এর মান খুঁজুন।

পদক্ষেপ 1.3: ধাপ 1.1 এবং 1.2 এ পাওয়া মানগুলির তুলনা করুন।
পদক্ষেপ 1.4: যদি তারা সমান হয়, সংখ্যা বাড়ান।

ধাপ 2: প্রিন্ট গণনা মান।

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#include <iostream>
using namespace std;

int main() {
   
   int n = 5;
   int counter = 0;
   for(int i=0; i<=n; i++ )
      if ( (n+i) == (n^i) )
         counter++;
   cout<<"The count of integers with equal sum and XOR is "<<counter;
   return 0;
}

আউটপুট −

The count of integers with equal sum and XOR is 2

পদ্ধতিটি ভাল তবে তাদের সমস্যাটির আরও ভাল সমাধান হতে পারে, যা এই সত্যটি ব্যবহার করছে

যদি n^i =n+i হয় , তারপর n&i =0 .

যদি n&i =0 এর মান হয়, তার জন্য আমাদের দুটি সংখ্যার বিপরীত সেট এবং আনসেট বিট থাকতে হবে। এবং আমরা যেমন মান গণনা করা প্রয়োজন. এটি করার জন্য এখানে একটি প্রোগ্রাম রয়েছে,

উদাহরণ

#include <iostream>
using namespace std;

int countValuesWithEqualSumXOR(int n) {
   
   int countUnSetBits=0;
   while (n) {
      if ((n & 1) == 0)
         countUnSetBits++;
      n=n>>1;
   }
   return 1 << countUnSetBits;
}

int main()
{
   int n = 6;
   cout<<"The count of integers with equal sum and XOR is "<<countValuesWithEqualSumXOR(n);
   return 0;
}

আউটপুট −

The count of integers with equal sum and XOR is 2

  1. K সাইজের সাব-অ্যারের সংখ্যা এবং C++ এ থ্রেশহোল্ডের চেয়ে বড় বা সমান গড়

  2. C++-এ K সমান যোগফল উপসেটে বিভাজন

  3. C++ এ বিভাজন সমান উপসেট সমষ্টি

  4. ন্যূনতম সংখ্যা যা N এর থেকে ছোট বা সমান এবং C++ এ যোগফল S সহ