দো সংখ্যা a, b এবং লিমিট দেওয়া আছে। a^i + b^j ফর্মের সব সংখ্যা [a, limit] রেঞ্জে খুঁজে বের করতে হবে (i,j ≥ 0)।
উদাহরণ
a=2, b=5, limit=10 → আউটপুট: 2, 3, 5, 6, 7, 9
- 2⁰+5⁰=2, 2⁰+5¹=6
- 2¹+5⁰=3, 2¹+5¹=7
- 2²+5⁰=5, 2³+5⁰=9
অ্যালগরিদম
- নেস্টেড লুপ: i=a^0, a^1... limit পর্যন্ত, j=b^0, b^1... limit পর্যন্ত।
- i+j ≤ limit হলে সেটে ইনসার্ট (ডুপ্লিকেট এড়াতে set ব্যবহার)।
- a=1 বা b=1 হলে ইনফিনিট লুপ এড়াতে ব্রেক করুন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
void powerfulNum(int a, int b, int limit) {
set<int> s;
for (int i = 1; i <= limit; i *= a) {
for (int j = 1; j <= limit; j *= b) {
if (i + j <= limit) s.insert(i + j);
else break;
if (b == 1) break;
}
if (a == 1) break;
}
for (int x : s) cout << x << " ";
}
int main() {
powerfulNum(2, 5, 10);
return 0;
}
আউটপুট
2 3 5 6 7 9