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

C প্রোগ্রামে 2^X - 1 রূপে সংখ্যা বানানোর ধাপ প্রিন্ট করা


ভূমিকা

একটি সংখ্যা n দেওয়া থাকলে, সেটিকে 2^X - 1 রূপে রূপান্তর করার ধাপগুলো প্রিন্ট করতে হবে। নিয়ম:

  • বিজোড় ধাপে (Step 1, 3, 5...): যেকোনো 2^M - 1 দিয়ে XOR অপারেশন করা (M আপনি বেছে নেবেন)
  • জোড় ধাপে (Step 2, 4, 6...): সংখ্যাকে ১ বাড়ানো

এই প্রক্রিয়া চলবে যতক্ষণ না n, 2^X - 1 রূপে আসে।

উদাহরণ

ইনপুট: 22
আউটপুট:
Step 1: Xor with 15
Step 2: Increase by 1
Step 3: Xor with 7
Step 4: Increase by 1
Step 5: Xor with 1

ইনপুট: 7
আউটপুট: No Steps to be performed

এলগরিদম

int find_leftmost_unsetbit(int n)
শুরু
  ind = -1, i = 1
  যতক্ষণ n != 0:
    যদি (n & 1) == 0 হয়: ind = i
    i++
    n = n >> 1 (ডান শিফট)
  ind রিটার্ন করুন
শেষ

void perform_steps(int n)
শুরু
  left = find_leftmost_unsetbit(n)
  যদি left == -1: "No Steps to be performed" প্রিন্ট করে রিটার্ন
  step = 1
  যতক্ষণ find_leftmost_unsetbit(n) != -1:
    যদি step জোড় হয়:
      n = n + 1
      "Step n: Increase by 1" প্রিন্ট
    অন্যথায়:
      m = find_leftmost_unsetbit(n)
      num = 2^m - 1
      n = n ^ num
      "Step n: Xor with num" প্রিন্ট
    step++
  লুপ শেষ
শেষ

C প্রোগ্রাম উদাহরণ

#include 
#include 

int find_leftmost_unsetbit(int n) {
    int ind = -1, i = 1;
    while (n) {
        if (!(n & 1))
            ind = i;
        i++;
        n >>= 1;
    }
    return ind;
}

void perform_steps(int n) {
    int left = find_leftmost_unsetbit(n);
    if (left == -1) {
        printf("No Steps to be performed\n");
        return;
    }
    int step = 1;
    while (find_leftmost_unsetbit(n) != -1) {
        if (step % 2 == 0) {
            n += 1;
            printf("Step %d: Increase by 1\n", step);
        } else {
            int m = find_leftmost_unsetbit(n);
            int num = (int)(pow(2, m) - 1);
            n = n ^ num;
            printf("Step %d: Xor with %d\n", step, num);
        }
        step++;
    }
}

int main() {
    int n = 22;
    perform_steps(n);
    return 0;
}

আউটপুট

Step 1: Xor with 15
Step 2: Increase by 1
Step 3: Xor with 7
Step 4: Increase by 1
Step 5: Xor with 1
  1. C প্রোগ্রামিং-এ স olid এবং হোলো রোম্বাস প্যাটার্ন প্রিন্ট করা

  2. C প্রোগ্রামিং-এ নাম্বার প্যাটার্ন প্রিন্ট করা (দুই ধরনের প্যাটার্ন)

  3. C প্রোগ্রামিং-এ স্কোয়ার ম্যাট্রিক্সকে Z ফর্মে (Z Form) প্রিন্ট করা

  4. পাইথন প্রোগ্রাম: ম্যাট্রিক্স Z আকারে প্রিন্ট করা