K অঙ্কের প্যালিনড্রোম সংখ্যাগুলোর n-তমটি বের করতে হবে দক্ষ পদ্ধতিতে।
প্যালিনড্রোমের দুটি আধা: বাম আধা এবং ডান আধা (বাম আধার রিভার্স)।
- K বিজোড় হলে: বাম আধার দৈর্ঘ্য = K/2 + 1
- K জোড় হলে: বাম আধার দৈর্ঘ্য = K/2
n-তম প্যালিনড্রোমের বাম আধা = 10^(len-1) + n - 1।
উদাহরণ
ইনপুট: n = 7, k = 8 → আউটপুট: 10066001
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
void findNthPalindrome(int n, int k) {
int halfLen = (k & 1) ? (k / 2) : (k / 2 - 1);
int palindrome = pow(10, halfLen) + n - 1;
cout << palindrome;
if (k & 1) palindrome /= 10;
while (palindrome) {
cout << palindrome % 10;
palindrome /= 10;
}
cout << endl;
}
int main() {
int n = 7, k = 8;
findNthPalindrome(n, k);
return 0;
}
আউটপুট
10066001