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

C++ में दोहराए गए अंकों वाली संख्या को स्पेल करने के तरीकों की गिनती


हमें एक संख्या दी गई है जिसमें कई दोहराए गए अंक हैं, स्ट्रिंग के रूप में। लक्ष्य है इसे स्पेल (उच्चारण) करने के तरीकों की संख्या ज्ञात करना। उदाहरण के लिए 112233 को "डबल वन, डबल टू, डबल थ्री" या "वन वन टू टू थ्री थ्री" के रूप में स्पेल किया जा सकता है।

हम लगातार अंकों की जांच करके करते हैं। यदि संख्या "13" है तो केवल एक तरीका है "वन थ्री"। यदि "113" है तो तरीके हैं "डबल वन थ्री", "वन वन थ्री"।

दृष्टिकोण: प्रत्येक लगातार अंक समूह के लिए, यदि उसकी लंबाई k है, तो उसे स्पेल करने के 2^(k-1) तरीके हैं। सभी समूहों के तरीकों को गुणा करें।

इनपुट - num = "11211"

आउटपुट - दोहराए गए अंकों वाली संख्या को स्पेल करने के तरीके: 4

उपयोग किया गया दृष्टिकोण

  • स्ट्रिंग को पार करें।
  • लगातार समान अंकों की गिनती temp करें।
  • count *= 2^(temp-1)
  • अंत में काउंट वापस करें।

उदाहरण (C++ कोड)

#include <bits/stdc++.h> 
using namespace std; 

long long word_spell(string str) { 
    long long 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 *= (1LL << (temp - 1)); // 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

  1. - C++ में फैक्टोरियल में अंकों की गिनती करें

    हमें एक पूर्णांक मान दिया गया है और कार्य पहले एक संख्या का फैक्टोरियल निकालना है और फिर परिणाम में अंकों की कुल संख्या की गणना करना है। फैक्टोरियल संख्या क्या है एक संख्या का फैक्टोरियल एक संख्या में अंकों को गुणा करके घटते क्रम में 1 से घटाकर गणना की जाती है। इसे प्रतीक ! द्वारा दर्शाया जाता है

  1. - C++ में अद्वितीय अंकों वाली संख्याओं की गिनती

    मान लीजिए हमारे पास एक गैर-ऋणात्मक पूर्णांक n है। हमें उन सभी संख्याओं को गिनना है जिनके अंक अद्वितीय हैं x, जहां x रेंज 0 से 10^n में है।उदाहरण के लिए, यदि संख्या n = 2 है, तो परिणाम 91 होगा, क्योंकि हम 0 से 100 तक 11, 22, 33, 44, 55, 66, 77, 88, 99 के बिना संख्याएं ढूंढना चाहते हैं।इसे हल करने के

  1. - C++ में अंकों के एरे के रूप में दर्शाई गई संख्या में एक जोड़ना

    एरे के रूप में दर्शाई गई संख्या संख्या के प्रत्येक अंक को एरे के एक तत्व में संग्रहीत करती है। एरे की लंबाई एरे में अंकों की संख्या के बराबर होती है यानी चार अंकों की संख्या के लिए लंबाई = 3। एरे का प्रत्येक तत्व एक अंक की संख्या है। संख्या इस तरह से संग्रहीत होती है कि अंतिम तत्व संख्या का सबसे कम