এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখব যা যাচাই করবে প্রদত্ত সংখ্যাটি কিথ সংখ্যা (Keith Number) কিনা।
যদি কোনো সংখ্যা n তার নিজের ডিজিটগুলো দিয়ে তৈরি সিকোয়েন্সে উপস্থিত থাকে, তবে সেটিকে কিথ সংখ্যা বলা হয়। এই সিকোয়েন্সের প্রথম nটি পদ হলো সংখ্যা n-এর ডিজিটগুলো এবং পরবর্তী পদগুলো হলো আগের nটি পদের যোগফল।
সমস্যা সমাধানের ধাপসমূহ
- সংখ্যা n ইনিশিয়ালাইজ করুন।
- সিকোয়েন্স সংরক্ষণের জন্য একটি খালি ভেক্টর elements ইনিশিয়ালাইজ করুন।
- ডিজিট গণনা করুন এবং প্রতিটি ডিজিট ভেক্টরে যোগ করুন।
- ডিজিট ভেক্টরটি রিভার্স করুন।
- nextElement নামে একটি ভেরিয়েবল ০ দিয়ে ইনিশিয়ালাইজ করুন।
- nextElement n-এর চেয়ে ছোট olduğu পর্যন্ত একটি লুপ চালান।
- পেছনের nটি ডিজিট যোগ করে nextElement বের করুন।
- nextElement ভেক্টরে যোগ করুন।
- যদি nextElement n-এর সমান হয়, তবে true রিটার্ন করুন, অন্যথায় false।
উদাহরণ কোড
#include<bits/stdc++.h>
using namespace std;
bool isKeithNumber(int n) {
vector<int> elements;
int temp = n, digitsCount = 0;
while (temp > 0) {
elements.push_back(temp % 10);
temp = temp / 10;
digitsCount++;
}
reverse(elements.begin(), elements.end());
int nextElement = 0, i = digitsCount;
while (nextElement < n) {
nextElement = 0;
for (int j = 1; j <= digitsCount; j++) {
nextElement += elements[i - j];
}
elements.push_back(nextElement);
i++;
}
return nextElement == n;
}
int main() {
isKeithNumber(43) ? cout << "Yes" << endl : cout << "No" << endl;
isKeithNumber(14) ? cout << "Yes" << endl : cout << "No" << endl;
isKeithNumber(197) ? cout << "Yes" << endl : cout << "No" << endl;
return 0;
}
আউটপুট
উপরের কোডটি রান করলে নিচের ফলাফল পাওয়া যাবে:
No Yes Yes
নিষ্কর্ষ
এই টিউটোরিয়াল সম্পর্কে আপনার যেকোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাতে পারেন।