সমস্যা বিবরণ
ইক্যানোবিফ সংখ্যা ফিবোনাচ্চির মতো কিন্তু পिछले দুটি সংখ্যার ডিজিট রিভার্স করে যোগ করা হয়।
শুরুর দুটি: 0, 1
পরবর্তী: rev(0) + rev(1) = 0 + 1 = 1
পরের: rev(1) + rev(1) = 1 + 1 = 2
এভাবেই চলতে থাকে।
সমাধানের পদ্ধতি
reverse_digits()ফাংশন লিখুন।- প্রথম দুটি সংখ্যা প্রিন্ট করুন।
- 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)