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

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


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

उदाहरण के लिए

इनपुट

numo = "abababab" demo = "abababababababab"

आउटपुट

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

व्याख्या

स्ट्रिंग्स को निम्न भाजक सबस्ट्रिंग्स का उपयोग करके उत्पन्न किया जा सकता है: "ab", "abab"

इनपुट

numo = "pqqppqqp" demo = "pqpq"

आउटपुट

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

व्याख्या

स्ट्रिंग्स का कोई सामान्य भाजक नहीं है। दोनों के केवल भाजक हैं: "pqqp" numo के लिए और "pq" demo के लिए।

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

किसी स्ट्रिंग sub1 के str का भाजक होने के लिए, यह str का उपसर्ग होना चाहिए और इसकी लंबाई str की लंबाई को पूरी तरह विभाजित करनी चाहिए। sub1 की इस शर्त को दोनों स्ट्रिंग्स numo और demo के साथ जांचें और तदनुसार गिनती बढ़ाएं।

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

  • फ़ंक्शन verify(string str, int val) स्ट्रिंग str लेता है और 1 लौटाता है यदि 0 से val के बीच का सबस्ट्रिंग दोहराकर str उत्पन्न कर सकता है।

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

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

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

  • i=0 से min_val तक फॉर लूप का उपयोग करके ट्रैवर्स करें।

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

  • फिर verify() का उपयोग करके जांचें कि क्या सबस्ट्रिंग 0 से i दोनों numo और demo का भाजक है।

  • यदि दोनों verify(numo, i) और verify(demo, 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++ में दिए गए आकार के आयत के अंदर संभावित समचतुर्भुजों की संख्या गिनना C++ में दिए गए आकार के आयत के अंदर संभावित समचतुर्भुजों की संख्या गिनना

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

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

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

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

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