इस समस्या में, हमें दो पूर्णांक मान N और X दिए जाते हैं। हमारा कार्य डिजिटल रूट X वाली Nवीं धनात्मक संख्या ढूंढने के लिए एक प्रोग्राम बनाना है।
डिजिटल रूट (X) एक एकल अंक की धनात्मक संख्या है जो N के अंकों को जोड़कर पुनरावर्ती रूप से अंकों को जोड़कर तब तक पाई जाती है जब तक योग एकल अंक नहीं बन जाता।
आइए एक उदाहरण से समस्या को समझते हैं,
इनपुट
N = 5, X = 4
आउटपुट
40
समाधान दृष्टिकोण
समस्या को हल करने का एक सरल तरीका डिजिटल रूट X वाली संख्याओं को गिनना है। इसके लिए, हम 1 से शुरू करेंगे और फिर जांचेंगे कि वर्तमान संख्या का डिजिटल रूट X के बराबर है या नहीं और संख्याओं को गिनेंगे और Nवीं ऐसी संख्या वापस करेंगे।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,
उदाहरण
#include <iostream> using namespace std; int calcDigitalRoot(int num) { int digitSum = 1000, number = num; while (digitSum >= 10) { digitSum = 0; while (number > 0) { digitSum += number % 10; number /= 10; } number = digitSum; } return digitSum; } int calcNthDigitalRoot(int X, int N) { int countDigitalRootVals = 0; for (int i = 1; countDigitalRootVals < N; ++i) { int digitalRoot = calcDigitalRoot(i); if (digitalRoot == X) { ++countDigitalRootVals; } if (countDigitalRootVals == N) return i; } return -1; } int main(){ int X = 4, N = 5; cout<<N<<"th positive number whose digital root is "<<X<<" is "<<calcNthDigitalRoot(X, N); return 0; }आउटपुट
5th positive number whose digital root is 4 is 40
कुशल दृष्टिकोण
समस्या को हल करने का एक कुशल दृष्टिकोण डिजिटल रूट X के बराबर Nवीं संख्या को सीधे सूत्र का उपयोग करके ढूंढना है, जो है,
Nवीं संख्या = (N - 1)*9 + X
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,
उदाहरण
#include <iostream> using namespace std; int calcNthDigitalRoot(int X, int N) { int nthNumber = (((N - 1) * 9) + X); return nthNumber; } int main() { int X = 4, N = 12; cout<<N<<"th positive number whose digital root is "<<X<<" is "<<calcNthDigitalRoot(X, N); return 0; }आउटपुट
12th positive number whose digital root is 4 is 103