इनपुट के रूप में दो स्ट्रिंग्स न्यूमो और डेमो दिए गए। लक्ष्य दोनों तारों के सामान्य भाजक की संख्या ज्ञात करना है। एक स्ट्रिंग के विभाजक निम्नलिखित तकनीक का उपयोग करते हुए पाए जाते हैं:यदि स्ट्रिंग स्ट्र में उप 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