এই সমস্যায়, আমাদের দুটি পূর্ণসংখ্যা মান N এবং X দেওয়া আছে। আমাদের কাজ হল X ডিজিটাল রুট वाले Nতম ধনাত্মক সংখ্যা বের করার প্রোগ্রাম লিখা।
ডিজিটাল রুট (X) হল একটি একক অঙ্কের ধনাত্মক সংখ্যা যা N-এর অঙ্কগুলো যোগ করে রিকারসিভভাবে বের করা হয়, যতক্ষণ না যোগফল একক অঙ্কের হয়।
উদাহরণ
ইনপুট
N = 5, X = 4
আউটপুট
40
সমাধানের পদ্ধতি
এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল X ডিজিটাল রুট বাড়া সংখ্যা গণনা করা। এর জন্য, আমরা ১ থেকে শুরু করব এবং চেক করব যে বর্তমান সংখ্যার ডিজিটাল রুট 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