Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में a OR b को c के बराबर बनाने के लिए न्यूनतम फ़्लिप्स


मान लीजिए कि हमारे पास 3 धनात्मक संख्याएँ a, b और c हैं। हमें (a OR b ==c ) बनाने के लिए a और b के कुछ बिट्स में आवश्यक न्यूनतम फ़्लिप खोजने होंगे। यहां हम बिटवाइज या ऑपरेशन पर विचार कर रहे हैं।

फ्लिप ऑपरेशन में किसी एक बिट को 1 से 0 में बदलना या बिट 0 से 1 को उनके बाइनरी प्रतिनिधित्व में बदलना शामिल है। तो अगर a :0010 और b :=0110, तो c 0101 है, फ़्लिप के बाद, a 0001 होगा, और b 0100 होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • उत्तर:=0
  • मैं के लिए 0 से 31 की सीमा में
    • bitC :=(c / 2^i) और 1
    • बिटा:=(ए / 2^i) और 1
    • बिटबी:=(बी/2^i) और 1
    • अगर (bitA या bitB) bitC के समान नहीं है, तो
      • यदि बिटसी 0 है
        • यदि बिटए =1 और बिटबी =1 है, तो उत्तर को 2 से बढ़ाएँ, अन्यथा उत्तर को 1 से बढ़ाएँ
      • अन्यथा उत्तर को 1 से बढ़ाएं
  • वापसी उत्तर

उदाहरण(C++)

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minFlips(int a, int b, int c) {
      int ans = 0;
      for(int i = 0; i < 32; i++){
         int bitC = (c >> i) & 1;
         int bitA = (a >> i) & 1;
         int bitB = (b >> i) & 1;
         if((bitA || bitB) != bitC){
            if(!bitC){
               if(bitA == 1 && bitB == 1){
                  ans += 2;
               }
               else {
                  ans += 1;
               }
            }
            else{
               ans += 1;
            }
         }
      }
      return ans;
   }
};
main(){
   Solution ob;
   cout << (ob.minFlips(2,6,5));
}

इनपुट

2
6
5

आउटपुट

3

  1. C++ में कुल n बनाने के लिए आवश्यक अक्षरों की न्यूनतम संख्या।

    समस्या कथन एक पूर्णांक n दिया गया है और a =1, b =2, c =3, ….., z =26 दें। कार्य कुल n बनाने के लिए आवश्यक अक्षरों की न्यूनतम संख्या ज्ञात करना है If n = 23 then output is 1 If n = 72 then output is 3(26 + 26 + 20) एल्गोरिदम 1. If n is divisible by 26 then answer is (n/26) 2. If n is not divisible b

  1. C++ का उपयोग करके दो स्ट्रिंग्स को समान बनाने के लिए आवश्यक न्यूनतम संख्या में ऑपरेशन।

    समस्या कथन दो स्ट्रिंग्स str1 और str2 को देखते हुए, दोनों स्ट्रिंग्स में a और b अक्षर होते हैं। दोनों तार समान लंबाई के हैं। दोनों स्ट्रिंग्स में एक _ (रिक्त स्थान) है। कार्य निम्न कार्यों की न्यूनतम संख्या करके पहली स्ट्रिंग को दूसरी स्ट्रिंग में परिवर्तित करना है - यदि _ स्थिति I पर है तो _ को

  1. C++ में एक स्ट्रिंग पैलिंड्रोम बनाने के लिए विलोपन की न्यूनतम संख्या।

    समस्या कथन आकार एन की एक स्ट्रिंग को देखते हुए। कार्य स्ट्रिंग पैलिंड्रोम बनाने के लिए वर्णों की न्यूनतम संख्या को हटाना है। यदि दी गई स्ट्रिंग abcda है तो हम इसे पैलिंड्रोम बनाने के लिए पहले और अंतिम को छोड़कर किन्हीं भी 2 वर्णों को हटा सकते हैं। अगर हम अक्षर b और c को हटाते हैं तो ada स्ट्रिं