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