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

C++-এ প্রথম N ইক্যানোবিফ (Iccanobif) সংখ্যা বের করার প্রোগ্রাম


সমস্যা বিবরণ

ইক্যানোবিফ সংখ্যা ফিবোনাচ্চির মতো কিন্তু পिछले দুটি সংখ্যার ডিজিট রিভার্স করে যোগ করা হয়।

শুরুর দুটি: 0, 1

পরবর্তী: rev(0) + rev(1) = 0 + 1 = 1

পরের: rev(1) + rev(1) = 1 + 1 = 2

এভাবেই চলতে থাকে।

সমাধানের পদ্ধতি

  1. reverse_digits() ফাংশন লিখুন।
  2. প্রথম দুটি সংখ্যা প্রিন্ট করুন।
  3. i = 3 থেকে N:
    • x = rev(first), y = rev(second)
    • next = x + y
    • প্রিন্ট করুন
    • first = second, second = next

C++ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int reverse_digits(int num) {
    int rev_num = 0;
    while (num > 0) {
        rev_num = rev_num * 10 + num % 10;
        num = num / 10;
    }
    return rev_num;
}

void icanobifNumbers(int N) {
    int first = 0, second = 1;
    if (N == 1) cout << first;
    else if (N == 2) cout << first << " " << second;
    else {
        cout << first << " " << second << " ";
        for (int i = 3; i <= N; i++) {
            int x = reverse_digits(first);
            int y = reverse_digits(second);
            cout << x + y << " ";
            int temp = second;
            second = x + y;
            first = temp;
        }
    }
}

int main() {
    int N = 12;
    icanobifNumbers(N);
    return 0;
}

আউটপুট

0 1 1 2 3 5 8 13 39 124 514 836

ব্যাখ্যা

0, 1, rev(0)+rev(1)=1, rev(1)+rev(1)=2, rev(1)+rev(2)=3, rev(2)+rev(3)=5, rev(3)+rev(5)=8, rev(5)+rev(8)=13, rev(8)+rev(13)=8+31=39, rev(13)+rev(39)=31+93=124, rev(39)+rev(124)=93+421=514, rev(124)+rev(514)=421+415=836

জটিলতা

  • সময়: O(N × d) — d = ডিজিট সংখ্যা
  • স্থান: O(1)
  1. স্ট্রিং-এ ব্যালেন্সিং পজিশনের সংখ্যা খুঁজে বের করা (C++)

  2. C++ প্রোগ্রাম: অ্যারে উপাদানগুলোর গুণফলের প্রথম ডিজিট বের করা

  3. C++ প্রোগ্রাম: দুটি সিরিজের প্রথম কলিশন পয়েন্ট বের করা

  4. C++ প্রোগ্রাম: মিডিয়ানের কাছে k সংখ্যা খুঁজে বের করা (S হল n সংখ্যার সেট)