हमें एक संख्या दी जाती है जिसमें एक स्ट्रिंग के रूप में कई दोहराए गए अंक होते हैं। लक्ष्य इसे वर्तनी के तरीकों की संख्या खोजना है। उदाहरण के लिए 112233 को डबल वन, डबल टू डबल थ्री या एक एक दो दो तीन तीन के रूप में लिखा जा सकता है।
हम निरंतर संख्याओं की जाँच करके ऐसा करेंगे। यदि संख्या "13" है, तो इसे "एक तीन" (20) के रूप में लिखने का केवल एक ही तरीका है। यदि अंक "113" तरीके "डबल वन थ्री", "वन वन थ्री" (21) हैं। तो, दृष्टिकोण स्ट्रिंग में एक निरंतर अंक को गिनना और पिछले परिणाम के साथ 2 (गिनती -1) गुणा करना है।
आइए उदाहरणों से समझते हैं।
इनपुट
num=”11211”
आउटपुट
Count of ways to spell a number with repeated digits are: 4
स्पष्टीकरण
ways are: 1. One one two one one 2. Double one two one one 3. One one two double one 4. Double one two double one
इनपुट
num=”2212”
आउटपुट
Count of ways to spell a number with repeated digits are: 2
स्पष्टीकरण
ways are: 1. Two two one two 2. Double two one two
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम किसी संख्या को दर्शाने के लिए स्ट्रिंग str ले रहे हैं।
-
फ़ंक्शन word_spell(string str) संख्या को str में लेता है और इसे वर्तनी के तरीके देता है।
-
ऐसे तरीकों के लिए प्रारंभिक चर गणना को 0 के रूप में लें
-
प्रत्येक अंक के लिए लूप ट्रैवर्स str का उपयोग करना।
-
एक विशेष अंक के दोहराव की संख्या के रूप में एक चर अस्थायी लें। अगर str[i]==str[i+1], तापमान बढ़ाएँ।
-
गणना गणना =गिनती * पाउ (2, अस्थायी -1)
-
अंत में परिणाम के रूप में वापसी की गणना करें।
उदाहरण
#include<bits/stdc++.h> using namespace std; long long int word_spell(string str){ long long int count = 1; int len = str.length(); for (int i=0; i<len; i++){ int temp = 1; while(i < len-1 && str[i+1] == str[i]){ temp++; i++; } count = count * pow(2, temp-1); } return count; } int main(){ string str = "222211"; cout<<"Count of ways to spell a number with repeated digits are: "<<word_spell(str); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of ways to spell a number with repeated digits are: 16