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

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 +3 के विषम अंकों के विषम अंकों के योग के रूप में पाया जा सकता है।

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

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#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<<"For query "<<(i+1)<<": The sum of odd number digit sums of all the factors of a number is "<<factorSum[query[i]]<<endl;
   return 0;
}

आउटपुट

For query 1: The sum of odd number digit sums of all the factors of a
number is 6
For query 2: The sum of odd number digit sums of all the factors of a
number is 31
For query 3: The sum of odd number digit sums of all the factors of a
number is 27

  1. C++ में विषम और सम संख्या वाले सभी स्तरों को प्रिंट करें

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

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

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

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

    एक सकारात्मक पूर्णांक के साथ दिया गया है और कार्य किसी संख्या के विषम कारकों को उत्पन्न करना और दिए गए विषम कारकों का योग ज्ञात करना है। उदाहरण Input-: number = 20 Output-: sum of odd factors is: 6 Input-: number = 18 Output-: sum of odd factors is: 13 तो, परिणाम =1 + 5 =6 नीचे दिए गए कार्यक्रम