इस कार्यक्रम में, हमें क्यू प्रश्न दिए गए हैं, प्रत्येक प्रश्न में एक सकारात्मक पूर्णांक एन है। हमारा कार्य सी ++ में किसी संख्या के सभी कारकों के विषम संख्या अंकों के योग पर प्रश्नों को हल करने के लिए एक प्रोग्राम बनाना है।
समस्या का विवरण - प्रत्येक प्रश्न को हल करने के लिए, हमें संख्या 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