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

C++ में सबसे बड़ा पालिंड्रोम उत्पाद

मान लीजिए कि हमारे पास इनपुट n है, हमें सबसे बड़ा पैलिंड्रोम ढूंढना है जो दो n अंकों की संख्याओं के गुणन का उपयोग करके बनाया जा सकता है। चूंकि संख्याएं बहुत बड़ी हैं, हम 1337 का उपयोग करके मॉड का प्रदर्शन कर सकते हैं। इसलिए यदि इनपुट 2 है, तो उत्तर 987, 987 =(99*91) मॉड 1337 =9009 मॉड 1337 =987 होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • मैक्सवैल :=10^n - 1
  • minVal :=maxVal / 10
  • इनिशियलाइज़ h :=maxVal के लिए, जब h> minVal, अपडेट करें (h को 1 से घटाएं), −
      करें
    • बाएं:=एच, दाएं:=0
    • इनिशियलाइज़ करने के लिए i :=h, जब i> 0, अपडेट करें दाएँ =दाएँ * 10 + i मॉड 10, बाएँ:=बाएँ * 10, i :=i / 10, करें −
      • x :=बाएँ + दाएँ
      • इनिशियलाइज़ करने के लिए i :=maxVal, जब i> minVal, अपडेट (i 1 से घटाएं), करें −
        • यदि मैं
        • लूप से बाहर आएं
      • यदि x mod i, 0 के समान है, तो −
        • रिटर्न x मॉड 1337
  • वापस 9
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long int lli;
    class Solution {
    public:
       int largestPalindrome(int n) {
          int maxVal = pow(10, n) - 1;
          int minVal = maxVal / 10;
          for(int h = maxVal; h > minVal; h--){
             lli left = h;
             lli right = 0;
             for(lli i = h; i > 0; right = right * 10 + i % 10, left*= 10, i/= 10);
             lli x = left + right;
             for(int i = maxVal; i > minVal; i--){
                if(i < x / i) break;
                if(x % i == 0) return x % 1337;
             }
          }
          return 9;
       }
    };
    main(){
       Solution ob;
       cout << (ob.largestPalindrome(3));
    }

    इनपुट

    3

    आउटपुट

    123

    1. C++ में X से विभाज्य सबसे बड़ी K अंक संख्या

      इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो x से विभाज्य सबसे बड़ी k-अंकीय संख्या ज्ञात करता है। आइए समस्या को हल करने के लिए चरणों को देखें। x और k को इनिशियलाइज़ करें। पाउ(10, k) - 1 का मान ज्ञात कीजिए जो k-अंकों की सबसे बड़ी संख्या है। अब, x से विभाज्य सबसे बड़ी k-अंकीय संख्या प्राप्

    1. सी++ में अगला पैलिंड्रोम प्राइम खोजें

      इस समस्या में, हमें एक तत्व N दिया जाता है। हमें अगला पैलिंड्रोम प्राइम ढूंढना होगा। समस्या का विवरण - हमें सबसे छोटी अभाज्य संख्या ज्ञात करनी होगी जो कि एक पैलिंड्रोम संख्या भी हो, जो N से बड़ी हो। पैलिंड्रोम संख्या एक संख्या है जिसमें दोनों दिशाओं में संख्याएं समान होती हैं। अभाज्य संख्या एक सं

    1. सी++ में सबसे बड़ा बीएसटी सबट्री

      मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें इसका सबसे बड़ा सबट्री ढूंढ़ना होगा जहां सबसे बड़ा मतलब सबट्री जिसमें सबसे बड़ी संख्या में नोड्स हों। तो, अगर इनपुट पसंद है, तो आउटपुट 3 होगा, क्योंकि इस मामले में सबसे बड़ा बीएसटी सबट्री हाइलाइट किया गया है। इसे हल करने के लिए, हम इन चरणों का पालन करे