N, A, B দেওয়া থাকলে, N চেয়ে বড় এবং A ও B অঙ্ক সমান সংখ্যক থাকা সংখ্যা বের করতে হবে।
উদাহরণ
ইনপুট: N = 1234, A = 2, B = 3
আউটপুট: 2233
অ্যালগরিদম
- রিকার্সিভ ফাংশন দিয়ে সব কন্বিনেশন জেনারেট করুন।
- প্রতিটি ধাপে
AবাBযোগ করুন। - যখন
AওB-এর কাউন্ট সমান হয় এবং সংখ্যাNচেয়ে বড় হয়, ফেরত দিন। - ন্যূনতম মান বের করুন।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
long getNextGreaterElement(long result, int A, int aCount, int B, int bCount, int N) {
if (result > 1e11) return 1e11;
if (aCount == bCount && result >= N) return result;
return min(
getNextGreaterElement(result * 10 + A, A, aCount + 1, B, bCount, N),
getNextGreaterElement(result * 10 + B, A, aCount, B, bCount + 1, N)
);
}
int main() {
int N = 1234, A = 2, B = 3;
cout << getNextGreaterElement(0, A, 0, B, 0, N) << endl; // 2233
return 0;
}
আউটপুট
2233