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