কম্পিউটার

x <=n এর মানের গণনা যার জন্য (n XOR x) =(n – x) C++ এ


ইনপুট হিসাবে আমাদের একটি সংখ্যা n দেওয়া হয়। লক্ষ্য হল x মানগুলি খুঁজে বের করা যেটি শর্ত (n xor x)=(nx) ধরে। এছাড়াও x সীমা [0, n] এর মধ্যে রয়েছে।

আসুন উদাহরণ দিয়ে বুঝতে পারি

ইনপুট − n=10

আউটপুট − x <=n এর মানের গণনা যার জন্য (n XOR x) =(n – x) হল −4

ব্যাখ্যা − 10 xor x =10-x − 0, 2, 8 এবং 10 সহ x এর মান।

ইনপুট − n=15

আউটপুট − x <=n এর মানের গণনা যার জন্য (n XOR x) =(n – x) হল −16

ব্যাখ্যা − 15 xor x =15-x − 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 এবং 15 সহ x এর মান।

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

আমরা দুটি পন্থা ব্যবহার করব। loops জন্য ব্যবহার করে প্রথম নিষ্পাপ পদ্ধতি. যতটা সম্ভব x এর জন্য i=0 থেকে i<=n এ যাত্রা শুরু করুন। এখন পরীক্ষা করুন যদি ( n - i ==(n ^ i) //xor )। যদি সত্য বৃদ্ধির সংখ্যা।

  • ইনপুট হিসাবে পূর্ণসংখ্যা ভেরিয়েবল n নিন।

  • ফাংশন unique_pair(int arr[], int size) অ্যারে এবং এর দৈর্ঘ্য নেয় এবং অনন্য জোড়ার সংখ্যা প্রদান করে যেমন জোড়ায় (arr[i],arr[j]) সূচক i

  • গণনার প্রাথমিক মান 0 হিসাবে নিন।

  • পূর্ণসংখ্যা জোড়া সম্বলিত একটি সেট 'se' নিন। (সেট> se)

  • লুপগুলির জন্য দুটি ব্যবহার করে arr[] অতিক্রম করা শুরু করুন। i=0 থেকে i

  • প্রতিটি জোড়ার জন্য সবসময় i

  • লুপের জন্য উভয়ের শেষে, count=se.size().

    আপডেট করুন
  • কাউন্টের এখন 'সে'-তে বেশ কয়েকটি জোড়া রয়েছে। ( সবগুলোই অনন্য)।

  • ফলাফল হিসাবে রিটার্ন গণনা।

দক্ষ পদ্ধতি

এই পদ্ধতিতে আমরা প্রথমে n কে এর বাইনারি সমতুল্য রূপান্তর করব। আমরা জানি যে

1 xor 0 =1-0

1 xor 1 =1-1

কিন্তু

0 xor 0 ≠ 0-1

0 xor 1 ≠ 0-1

সুতরাং n-এর বাইনারি উপস্থাপনায় প্রতি 1-এর জন্য, 2টি ক্ষেত্রে রয়েছে। n-এর বাইনারি উপস্থাপনায় p এর জন্য, 2p মান থাকবে যা শর্ত পূরণ করবে।

সূচক i. তারপর মোট অনন্য জোড়ার জন্য পৃথক পৃথক সংখ্যা যোগ করুন।

  • ইনপুট হিসাবে পূর্ণসংখ্যা ভেরিয়েবল n নিন।

  • ফাংশন unique_pair(int arr[], int size) অ্যারে এবং এর দৈর্ঘ্য নেয় এবং অনন্য জোড়ার সংখ্যা প্রদান করে যেমন জোড়ায় (arr[i],arr[j]) সূচক i

  • গণনার প্রাথমিক মান 0 হিসাবে নিন।

  • Number=bitset<8>(n).to_string();

    ব্যবহার করে n এ স্ট্রিং রূপান্তর করুন
  • length=number.length().

    নিন
  • সূচী i=0 থেকে i<দৈর্ঘ্য পর্যন্ত লুপ ব্যবহার করে ট্র্যাভার্স স্ট্রিং। প্রতিটি 1 ইনক্রিমেন্ট গণনার জন্য।

  • x এর চূড়ান্ত মান হিসাবে count=pow(2,count) সেট করুন।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ (নিষ্পাপ পদ্ধতি)

#include<bits/stdc++.h>
using namespace std;
int count_values(int n){
   int count = 0;
   for (int i = 0; i <= n; i++){
      if (n - i == (n ^ i)){
         count++;
      }
   }
   return count;
}
int main(){
   int n = 25;
   cout<<"Count of values of x <= n for which (n XOR x) = (n – x) are: "<<count_values(n);
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Count of values of x <= n for which (n XOR x) = (n – x) are: 8

উদাহরণ (দক্ষ পদ্ধতি)

#include<bits/stdc++.h>
using namespace std;
int count_values(int n){
   int count = 0;
   string number = bitset<8>(n).to_string();
   int length = number.length();
   for (int i = 0; i < length; i++){
      if (number.at(i) == '1')
         { count++; }
   }
   count = (int)pow(2, count);
   return count;
}
int main(){
   int n = 25;
   cout<<"Count of values of x <= n for which (n XOR x) = (n – x) are: "<<count_values(n);
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Count of values of x <= n for which (n XOR x) = (n – x) are: 8

  1. C++ এ বাইনারি উপস্থাপনায় XOR 0s এবং 1s গণনা করে

  2. সমস্ত প্যালিনড্রোম গণনা করুন যা C++ এ একটি প্যালিনড্রোমের বর্গক্ষেত্র

  3. C++ এ প্রদত্ত XOR সহ সমস্ত জোড়া গণনা করুন

  4. দুটি সংখ্যার সাধারণ ভাজকের জন্য C++ প্রোগ্রাম?