কম্পিউটার টিউটোরিয়াল

সি++-এ K অঙ্কের n-তম প্যালিনড্রোম বের করা

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
  1. C++-এ K ডিজিট রিমুভ করে সবচেয়ে ছোট সংখ্যা বানানো

  2. C++-এ প্যালিনড্রোম ভাঙুন

  3. C++-এ প্যালিনড্রোম পার্টিশনিং (মিনিমাম কাট)

  4. C++-এ একটি সংখ্যা প্যালিনড্রোম কিনা তা যাচাই করা