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

C++ में दिए गए स्ट्रिंग्स के सामान्य भाजक की संख्या की गणना करें

इनपुट के रूप में दो स्ट्रिंग्स न्यूमो और डेमो दिए गए। लक्ष्य दोनों तारों के सामान्य भाजक की संख्या ज्ञात करना है। एक स्ट्रिंग के विभाजक निम्नलिखित तकनीक का उपयोग करते हुए पाए जाते हैं:यदि स्ट्रिंग स्ट्र में उप 1 का भाजक है तो हम स्ट्र उत्पन्न होने तक इसे किसी भी संख्या में दोहराकर उप 1 का उपयोग करके स्ट्र का निर्माण कर सकते हैं। उदाहरण:str=abcabcabc sub1=abc

उदाहरण के लिए

इनपुट

numo = "abababab" demo = "abababababababab"

आउटपुट

Count of number of common divisors of the given strings are: 2

स्पष्टीकरण

The strings can be generated using following divisor substrings :
“ab”, “abab”

इनपुट

numo = "pqqppqqp" demo = "pqpq"

आउटपुट

Count of number of common divisors of the given strings are: 0

स्पष्टीकरण

The strings do not have any common divisor. Only divisors of both are:
“pqqp” for numo and “pq” for demo.

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

किसी भी स्ट्रिंग सब1 के लिए str का भाजक होने के लिए, यह str का उपसर्ग होना चाहिए और इसकी लंबाई str की लंबाई को पूरी तरह से विभाजित करना चाहिए। सब1 की इस स्थिति को दोनों स्ट्रिंग्स न्यूमो और डेमो के साथ जांचें और तदनुसार वृद्धि की गणना करें।

  • इनपुट के रूप में स्ट्रिंग्स न्यूमो और डेमो लें।

  • फ़ंक्शन सत्यापित करें (स्ट्रिंग स्ट्र, इंट वैल) स्ट्रिंग स्ट्र लेता है और 1 देता है यदि 0 से वैल के बीच सबस्ट्रिंग को स्ट्र उत्पन्न करने के लिए दोहराया जा सकता है।

  • फंक्शन common_divisor(string numo, string demo) दोनों स्ट्रिंग्स लेता है और दिए गए स्ट्रिंग्स के कॉमन डिविज़र की संख्या की गणना करता है।

  • प्रारंभिक गणना 0 के रूप में लें।

  • इनपुट स्ट्रिंग्स की लंबाई की गणना करें। और न्यूनतम लंबाई min_val में स्टोर करें।

  • इंडेक्स i=0 से min_val तक लूप के लिए उपयोग करके ट्रैवर्स करें।

  • यदि सबस्ट्रिंग की वर्तमान लंबाई i दोनों स्ट्रिंग्स की लंबाई को विभाजित करती है numo_size anddemo_size और उपसर्ग भी numo.substr(0, i) ==demo.substr(0, i) से मेल खाते हैं।

  • फिर पता लगाएं कि क्या 0 से i सबस्ट्रिंग सत्यापन () का उपयोग करके संख्या और डेमो दोनों का भाजक है

  • यदि दोनों सत्यापित (numo,i) और सत्यापित करें (डेमो, i) 1 लौटाते हैं तो वृद्धि गणना।

  • लूप रिटर्न के अंत में परिणाम के रूप में गिना जाता है।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int verify(string str, int val){
   int length = str.length();
   for (int i = 0; i < length; i++){
      if(str[i] != str[i % val]){
         return 0;
      }
   }
   return 1;
}
int common_divisor(string numo, string demo){
   int count = 0;
   int numo_size = numo.size();
   int demo_size = demo.size();
   int min_val = min(numo_size, demo_size);
   for(int i = 1; i <= min_val; i++){
      if(numo_size % i == 0){
         if(demo_size % i == 0){
            if(numo.substr(0, i) == demo.substr(0, i)){
               if(verify(numo, i)==1){
                  if(verify(demo, i)==1){
                     count++;
                  }
               }
            }
         }
      }
   }
   return count;
}
int main(){
   string numo = "abababab";
   string demo = "abababababababab";
   cout<<"Count the number of common divisors of the given strings are:
   "<<common_divisor(numo, demo);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count the number of common divisors of the given strings are: 3

  1. C++ में दिए गए आकार के आयत के अंदर संभव रंबी की संख्या की गणना करें

    हमें ऊंचाई X चौड़ाई के रूप में आयामों के साथ एक आयत दिया गया है। आयत को एक 2D निर्देशांक प्रणाली पर दर्शाया गया है जिसमें बिंदु (0,0) पर बाएँ-निचले कोने हैं। तो लक्ष्य इस आयत के अंदर संभव रोम्बी की संख्या को गिनना है ताकि ये सभी शर्तें पूरी हों - समचतुर्भुज का क्षेत्रफल 0 से अधिक होता है। समचत

  1. सी ++ में दो तारों में सामान्य वर्णों की गणना करें

    हमें दो स्ट्रिंग्स के साथ दिया गया है, मान लें कि str1 और str2 और कार्य दो स्ट्रिंग्स में सामान्य वर्णों की गणना करना है, अर्थात यदि str1 [i] =str [j], तो उन्हें एक जोड़ी माना जाएगा और गिनती बढ़ जाएगी से 1 और यदि str1[i]!=str2[j] तो उन्हें एक जोड़ी के रूप में नहीं माना जाएगा और गिनती 1 तक नहीं बढ़ेग

  1. C++ में किसी संख्या के सभी पूर्ण भाजक गिनें

    इस ट्यूटोरियल में, हम किसी संख्या के सभी पूर्ण भाजक की संख्या ज्ञात करने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक नंबर दिया जाएगा। हमारा काम उस दी गई संख्या के सभी पूर्ण भाजक को गिनना है। उदाहरण #include<bits/stdc++.h> using namespace std; //checking perfect square bool if_psquar