কম্পিউটার টিউটোরিয়াল

C++-এ দুটি বাইনারি সংখ্যার যোগফলে প্রথম ক্যারি তৈরি করা ডানপাশের বিটের পজিশন


এই সমস্যাতে, দুটি ধনাত্মক পূর্ণসংখ্যা N এবং M দেওয়া আছে। আমাদের কাজ হলো N এবং M-এর বাইনারি যোগফলে প্রথম ক্যারি বিট তৈরি করার ডানপাশের বিটের পজিশন প্রিন্ট করা।

উদাহরণ:

ইনপুট - N = 5, M = 14

আউটপুট - 3

ব্যাখ্যা -

(5)2 = 0101 , (14)2 = 1110
Sum 0101 + 1110 = 10011

সমাধানের জন্য, আমরা বুলিয়ান বীজগণিতের কিছু পর্যবেক্ষণ বিবেচনা করব।

যোগফলে ক্যারি তখন তৈরি হবে যখন দুটি সংখ্যাও ১ হবে। তাই আমরা সব বিত খুঁজে বের করব যেখানে ক্যারি তৈরি হচ্ছে। এটি করার জন্য দুটি সংখ্যার AND অপারেশন করব। এবং তারপর সংখ্যার ডানপাশের সেট বিট বের করব।

এটি একটু জটিল মনে হতে পারে, চলুন এই পদ্ধতিতে একটি উদাহরণ সমাধান করি।

N = 5 and M = 14
N&M = 0100

এখানে ডানপাশের সেট বিট ইনডেক্স ৩-তে।

উদাহরণ

সমাধানের প্রোগ্রাম:

#include <iostream> 
#include <math.h> 
using namespace std; 

int rightSetBit(int N) {
    int bitIndex = log2(N & -N)+1;
    return bitIndex;
}

void rightCarryBit(int N, int M) {
    int carryIndex = rightSetBit(N & M);
    cout << carryIndex;
}

int main() {
    int N=4, M=14;
    cout << "The position of rightmost bit that generates carry in the sum of " << N << " and " << M << " is ";
    rightCarryBit(N,M);
    return 0;
}

আউটপুট

The position of rightmost bit that generates carry in the sum of 4 and 14 is 3

  1. C++-এ BST-এ Two Sum IV (Two Sum IV - Input is a BST)

  2. C++-এ দুটি বাইনারি ট্রি মার্জ করা

  3. C++-এ দুটি বাইনারি ট্রির প্রথম অমিল লীফ নোড (Non-matching Leaves) খুঁজে বের করা

  4. C++ প্রোগ্রাম: দুটি সংখ্যা বের করা যাদের যোগফল ও গুণফল N-র সমান