Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में K अंकों की nवीं पेलिंड्रोम संख्या


K अंकों की n-वीं पेलिंड्रोम संख्या ढूंढने के लिए, हम पहली K अंकों की संख्या से पुनरावृति कर सकते हैं जब तक हम n-वीं पेलिंड्रोम संख्या नहीं ढूंढ लेते। यह दृष्टिकोण कुशल नहीं है। आप इसे स्वयं आजमा सकते हैं।

अब, आइए K अंकों की n-वीं पेलिंड्रोम संख्या ढूंढने के कुशल दृष्टिकोण को देखते हैं।

संख्याओं में दो आधे होते हैं। पहला आधा दूसरे आधे के उल्टे के बराबर होता है।

K अंकों की n-वीं संख्या के पहले आधे हैं

यदि k विषम है तो (n - 1) + 10k/2 अन्यथा (n-1)+10k/2-1

K अंकों की n-वीं संख्या का दूसरा आधा पहले आधे के अंकों का उल्टा होगा। यदि k विषम है तो पहले आधे की संख्या से अंतिम अंक को काट दें।

एल्गोरिदम

  • संख्याएं n और k आरंभ करें।
  • k के मान का उपयोग करके K-अंक पेलिंड्रोम के पहले आधे की लंबाई ज्ञात करें।
  • पेलिंड्रोम का पहला आधा pow(10, length) + 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++ में पैलिंड्रोम को तोड़ना

    मान लीजिए हमारे पास एक पैलिंड्रोमिक स्ट्रिंग palindrome है, हमें इसमें ठीक एक अक्षर को किसी भी लोअरकेस अंग्रेजी अक्षर से बदलना है ताकि स्ट्रिंग लेक्सिकोग्राफिक रूप से सबसे छोटी संभव स्ट्रिंग बन जाए जो पैलिंड्रोम न हो। ऐसा करने के बाद हमें अंतिम स्ट्रिंग ढूंढनी है। यदि ऐसा करना संभव न हो, तो खाली स्ट

  1. - C++ में पैलिंड्रोम विभाजन (Palindrome Partitioning)

    मान लीजिए हमारे पास एक इनपुट स्ट्रिंग है, उस स्ट्रिंग का एक विभाजन पैलिंड्रोम विभाजन है, जब विभाजन का हर उपस्ट्रिंग एक पैलिंड्रोम हो। इस खंड में, हमें दी गई स्ट्रिंग को पैलिंड्रोम विभाजन करने के लिए आवश्यक न्यूनतम कट (minimum cuts) ढूंढने हैं। यदि स्ट्रिंग ababbbabbababa है, तो पैलिंड्रोम के रूप मे

  1. - C++ में जांचें कि संख्या पैलिंड्रोम है या नहीं

    यहां हम देखेंगे कि कैसे जांचें कि कोई संख्या पैलिंड्रोम है या नहीं। पैलिंड्रोम संख्याएं दोनों दिशाओं में समान होती हैं। उदाहरण के लिए, संख्या 12321 एक पैलिंड्रोम है, लेकिन 12345 पैलिंड्रोम नहीं है।तर्क बहुत सीधा है। हमें संख्या को उल्टा करना होगा, और यदि उल्टी संख्या वास्तविक संख्या के समान है, तो व