परिचय
इस ट्यूटोरियल में हम एक ऐसा प्रोग्राम लिखेंगे जो दी गई संख्या के अंकों का योग तब तक करता है जब तक यह एकल अंक (single digit) न बन जाए। आइए एक उदाहरण देखते हैं।
इनपुट - 4543
आउटपुट - 7
विधि 1: लूप का उपयोग करके
चरण
- एक संख्या इनिशियलाइज़ करें।
- योग को 0 से इनिशियलाइज़ करें।
- जब तक योग 9 से कम न हो जाए तब तक पुनरावृत्ति करें:
- मॉड्यूलो ऑपरेटर का उपयोग करके संख्या के प्रत्येक अंक को योग में जोड़ें।
- योग प्रिंट करें।
उदाहरण कोड
#include <bits/stdc++.h>
using namespace std;
void findTheSingleDigit(int n) {
int sum = 0;
while(n > 0 || sum > 9) {
if(n == 0) {
n = sum;
sum = 0;
}
sum += n % 10;
n /= 10;
}
cout << sum << endl;
}
int main() {
int n = 4543;
findTheSingleDigit(n);
return 0;
}
आउटपुट
7
विधि 2: गणितीय सूत्र (डिजिटल रूट)
हम इस समस्या को हल करने के लिए एक सरल गणितीय गुण का उपयोग कर सकते हैं:
- यदि दी गई संख्या 9 से विभाज्य है, तो उत्तर 9 है।
- अन्यथा उत्तर n % 9 है।
इसे डिजिटल रूट (Digital Root) कहा जाता है।
उदाहरण कोड
#include <bits/stdc++.h>
using namespace std;
void findTheSingleDigit(int n) {
if (n == 0) {
cout << 0;
} else if (n % 9 == 0) {
cout << 9 << endl;
} else {
cout << n % 9 << endl;
}
}
int main() {
int n = 4543;
findTheSingleDigit(n);
return 0;
}
आउटपुट
7
निष्कर्ष
दूसरी विधि O(1) समय जटिलता के साथ बहुत अधिक कुशल है। यह मॉड्यूलर अंकगणित के गुणों पर आधारित है। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।