একটি সংখ্যা N দেওয়া থাকলে, এমন একটি সংখ্যা X বের করতে হবে যাতে X + (X-এর ডিজিটগুলোর যোগফল) = N হয়।
পদ্ধতি
- N-এর আশেপাশে ১০০ সংখ্যা চেক করুন (কারণ ডিজিট যোগফল সর্বোচ্চ ৯x১০=৯০ হতে পারে)।
- N-i এবং N+i উভয় দিক চেক করুন।
- প্রতিটি ক্যান্ডিডেটের জন্য ডিজিট যোগফল বের করে মোট যোগফল N কিনা চেক করুন।
- পাওয়া গেলে প্রিন্ট করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int digitSum(int n) {
int sum = 0;
while (n) { sum += n%10; n/=10; }
return sum;
}
void findX(long n) {
bool found = false;
for (int i = 0; i <= 100; i++) {
long left = abs(n-i) + digitSum(abs(n-i));
long right = n+i + digitSum(n+i);
if (left == n) { cout << abs(n-i) << " "; found = true; }
if (right == n) { cout << n+i << " "; found = true; }
}
if (!found) cout << "No numbers found";
cout << endl;
}
int main() {
findX(89);
return 0;
}
আউটপুট
76
76 + (7+6) = 76 + 13 = 89।