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

C++ में संख्या के सभी गुणनखंडों के विषम अंकों के योग पर क्वेरीज़


समस्या विवरण

इस प्रोग्राम में, हमें Q क्वेरीज़ दी गई हैं, प्रत्येक क्वेरी में एक धनात्मक पूर्णांक N होता है। हमारा कार्य C++ में एक संख्या के सभी गुणनखंडों के विषम अंकों के योग पर क्वेरीज़ को हल करने के लिए एक प्रोग्राम बनाना है।

प्रत्येक क्वेरी को हल करने के लिए, हमें संख्या N के सभी गुणनखंड ढूंढने होंगे। फिर जिन गुणनखंडों का अंकों का योग विषम है, उन्हें जोड़ें। और प्रत्येक क्वेरी के लिए अंतिम योग वापस करें।

उदाहरण

इनपुट

Q = 2, queries = {15, 8}

आउटपुट

8 1

व्याख्या

क्वेरी 1 के लिए: N = 15, 15 के गुणनखंड हैं 1, 3, 5, 15।

गुणनखंडों में विषम अंकों का योग 1 + 3 + 5 = 8

क्वेरी 2 के लिए: N = 8, 8 के गुणनखंड हैं 1, 2, 4, 8।

गुणनखंडों में विषम अंकों का योग 1 = 1

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए, हमें सभी संख्याओं के विषम अंकों का योग चाहिए। जिससे हम गुणनखंडों की गणना करेंगे और फिर परिणाम के लिए उन्हें जोड़ेंगे। इस अंकों के योग की प्रक्रिया को आसान बनाने के लिए हम पूर्व-गणना किए गए मानों का उपयोग कर सकते हैं। उदाहरण के लिए, संख्या 41 का योग 4 के विषम अंकों के योग + 1 के विषम अंकों के योग के रूप में पाया जा सकता है।

oddDigitSum सरणी बनाने के बाद, हम उन सभी संख्याओं को ढूंढेंगे जो दी गई संख्या को विभाजित कर सकती हैं। फिर, हम oddDigitSum सरणी का उपयोग करके सभी विषम अंकों को जोड़ेंगे।

कार्यक्रम उदाहरण

#include <iostream>
using namespace std;
#define N 99999

void calcOddDigitSum(int oddDigitSum[]) {
    for (int i = 1; i < N; i++)
        oddDigitSum[i] = oddDigitSum[i / 10] + (i & 1) * (i % 10);
}

void findFactorSum(int oddDigitSum[], int factorSum[]) {
    for (int i = 1; i < N; i++)
        for (int j = i; j < N; j += i)
            factorSum[j] += oddDigitSum[i];
}

int main(){
    int Q = 3;
    int query[] = { 5, 154, 98 };
    int oddDigitSum[N];
    int factorSum[N];
    calcOddDigitSum(oddDigitSum);
    findFactorSum(oddDigitSum, factorSum);
    for (int i = 0; i < Q; i++)
        cout << "क्वेरी " << (i+1) << ": संख्या के सभी गुणनखंडों के विषम अंकों का योग " << factorSum[query[i]] << endl;
    return 0;
}

आउटपुट

क्वेरी 1: संख्या के सभी गुणनखंडों के विषम अंकों का योग 6
क्वेरी 2: संख्या के सभी गुणनखंडों के विषम अंकों का योग 31
क्वेरी 3: संख्या के सभी गुणनखंडों के विषम अंकों का योग 27
  1. C++ में विषम और सम संख्या में नोड्स वाले सभी स्तर प्रिंट करें C++ में विषम और सम संख्या में नोड्स वाले सभी स्तर प्रिंट करें

    इस समस्या में, हमें एक ट्री दिया गया है। और हमें उन सभी स्तरों को प्रिंट करना है जिनमें सम संख्या में नोड्स और विषम संख्या में नोड्स हैं। अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं आउटपुट - विषम संख्या में नोड्स वाले स्तर: 1, 3, 4 सम संख्या में नोड्स वाले स्तर: 2 व्याख्या - पहले स्तर म

  1. - किसी संख्या के सम और विषम स्थानों के अंकों का योग खोजें C++ में

    मान लीजिए, हमारे पास एक पूर्णांक N है, हमें विषम स्थान के अंकों का योग और सम स्थान के अंकों का योग खोजना है। तो यदि संख्या 153654 जैसी है, तो odd_sum = 9, और even_sum = 15। इसे हल करने के लिए, हम अंतिम अंक से सभी अंक निकाल सकते हैं, यदि मूल संख्या में अंकों की संख्या विषम है, तो अंतिम अंक विषम स्थान

  1. C++ प्रोग्राम किसी संख्या के विषम गुणनखंडों का योग ज्ञात करने के लिए C++ प्रोग्राम किसी संख्या के विषम गुणनखंडों का योग ज्ञात करने के लिए

    एक धनात्मक पूर्णांक दिया गया है और कार्य उस संख्या के विषम गुणनखंडों को उत्पन्न करना और दिए गए विषम गुणनखंडों का योग निकालना है। उदाहरण इनपुट: संख्या = 20 आउटपुट: विषम गुणनखंडों का योग है: 6 इनपुट: संख्या = 18 आउटपुट: विषम गुणनखंडों का योग है: 13 तो, परिणाम = 1 + 5 = 6 नीचे दिए गए प्रोग्राम में