इस समस्या में, हमें दो पूर्णांक मान N और X दिए गए हैं। हमारा कार्य Nth धनात्मक संख्या ज्ञात करने के लिए एक प्रोग्राम बनाना है जिसका डिजिटल रूट X है।
डिजिटल रूट (X) एक एकल अंक धनात्मक संख्या है जो N के अंकों को पुनरावर्ती रूप से अंकों को जोड़कर पाया जाता है, जब तक कि योग एकल अंक न हो जाए।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
N = 5, X = 4
आउटपुट
40
समाधान दृष्टिकोण
समस्या को हल करने का एक आसान तरीका है डिजिटल रूट के साथ संख्याओं की गणना करना एक्स है। इसके लिए, हम 1 से शुरू करेंगे और फिर जांच करेंगे कि वर्तमान संख्या का डिजिटल रूट एक्स के बराबर है या नहीं और संख्याओं की गणना करें और ऐसी संख्या वापस करें।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#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
कुशल तरीका
समस्या को हल करने का एक प्रभावी तरीका N th . का पता लगाना है प्रत्यक्ष सूत्र का उपयोग करके एक्स के बराबर डिजिटल रूट वाली संख्या, जो है,
Nth number = (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