কম্পিউটার

C++-এ K সংখ্যার N'th প্যালিনড্রোম


k সংখ্যার n-ম প্যালিনড্রোম খুঁজে বের করার জন্য, আমরা n-তম প্যালিনড্রোম সংখ্যা না পাওয়া পর্যন্ত প্রথম k সংখ্যার সংখ্যা থেকে পুনরাবৃত্তি করতে পারি। এই পদ্ধতিটি কার্যকর নয়। আপনি নিজে চেষ্টা করে দেখতে পারেন।

এখন, k সংখ্যার n-তম প্যালিন্ড্রোম খুঁজে বের করার কার্যকরী পদ্ধতি দেখি।

সংখ্যা দুটি অর্ধেক আছে. প্রথমার্ধ দ্বিতীয়ার্ধের বিপরীতের সমান।

k সংখ্যা সহ n-ম সংখ্যার প্রথমার্ধ হল

k বিজোড় হলে (n - 1) + 10 k/2 else(n-1)+10 k/2-1

k সংখ্যা সহ n-ম সংখ্যার দ্বিতীয়ার্ধটি অঙ্কগুলির প্রথমার্ধের বিপরীত হবে। সংখ্যার প্রথমার্ধ থেকে শেষ অঙ্কটি ছেঁটে দিন, যদি k বিজোড় হয়।

অ্যালগরিদম

  • n এবং k সংখ্যাটি শুরু করুন।
  • k-এর মান ব্যবহার করে k-ডিজিটের প্যালিনড্রোমের প্রথমার্ধের দৈর্ঘ্য খুঁজুন।
  • প্যালিনড্রোমের প্রথমার্ধটি হল pow(10, দৈর্ঘ্য) + n - 1।
  • যদি k বিজোড় হয়, তাহলে প্যালিনড্রোমের প্রথমার্ধ থেকে শেষ অঙ্কটি সরিয়ে দিন।
  • প্রথম অর্ধেক বিপরীত করুন এবং দ্বিতীয়ার্ধ প্রিন্ট করুন।

বাস্তবায়ন

C++

-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল
#include<bits/stdc++.h>
using namespace std;
void findNthPalindrome(int n, int k) {
   int temp = (k & 1) ? (k / 2) : (k / 2 - 1);
   int palindrome = (int)pow(10, temp);
   palindrome += 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++ এ প্যালিনড্রোম কিনা তা পরীক্ষা করুন