ইনপুট হিসাবে একটি সংখ্যা N দেওয়া হয়েছে। লক্ষ্য হল m পর্যন্ত N পর্যন্ত সংখ্যাগুলি খুঁজে বের করা যা নিম্নলিখিত শর্তগুলি পূরণ করে। এখানে N<=10 9
m + যোগফল(m) + যোগফল ( যোগফল (m) ) =N. যেখানে যোগফল(m) হল m-এর অঙ্কের যোগফল৷
যদি m 137 হয় তাহলে যোগফল(m)=1+3+7=11 এবং যোগফল(m(m))=sum(11)=1+1=2
আসুন উদাহরণ দিয়ে বোঝা যাক।
উদাহরণস্বরূপ
ইনপুট - N=27
আউটপুট - সন্তোষজনক সংখ্যার গণনা m + sum(m) + sum(sum(m)) =N হল:3
ব্যাখ্যা - সংখ্যাগুলো হল:
9 ( 9 + 9 + 9 =27 )
15 ( 15 + (1+5) + (6) =27 )
21 ( 21 + (2+1) + (3) =27 )
ইনপুট - N=81
আউটপুট - সন্তোষজনক সংখ্যার সংখ্যা m + যোগফল(m) + যোগফল(সমষ্টি(m)) =N হল:2
ব্যাখ্যা - সংখ্যাগুলো হল:
63 ( 63 + (6+3) + 9 =81 )
66 ( 66 + (6+6) + (1+2) =81 )
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
এই পদ্ধতিতে আমরা সংখ্যার অঙ্কের যোগফল গণনা করব এবং N-এর সাথে যোগ যোগফলের তুলনা করব। গণনা করা যোগফল যদি N-এর সমান হয় তাহলে বৃদ্ধির সংখ্যা। শেষে ফলাফল হিসাবে গণনা ফেরত.
সবচেয়ে বড় সংখ্যা হতে পারে 10 9 তাহলে m সংখ্যার সর্বোচ্চ যোগফল হতে পারে 81 ( 9*9 ) এবং পরবর্তী সর্বাধিক অঙ্কের যোগফল (sum(m)) হতে পারে 16 ( 79 এর জন্য 7+9)। তাই আমরা N-97 থেকে N পর্যন্ত সংখ্যাগুলি পরীক্ষা করব কারণ N-97-এর থেকে ছোট এবং N-এর চেয়ে বড় পূর্ণসংখ্যা প্রদত্ত শর্ত পূরণ করবে না।
- ইনপুট হিসাবে N পূর্ণসংখ্যা নিন।
- ফাংশন মোট (int num) একটি সংখ্যা মোট নেয় এবং এর সংখ্যার যোগফল প্রদান করে।
- সংখ্যার যোগফল হিসাবে res_total নিন এবং বর্তমান অবশিষ্টাংশ হিসাবে res. 0 দিয়ে উভয়ই শুরু করুন।
- একটি সময় লুপ ব্যবহার করে প্রতিটি ইউনিট সংখ্যা অতিক্রম করুন।
- একক সংখ্যাটিকে res=num % 10 হিসাবে নিন এবং res_total-এ যোগ করুন।
- পরবর্তী সংখ্যার জন্য 10 দ্বারা সংখ্যা কমিয়ে দিন।
- শেষে সংখ্যার অঙ্কের যোগফল হিসাবে res_total ফেরত দিন।
- ফাংশন কন্ডিশন (int N) N নেয় এবং m + sum(m) + sum(sum(m))।
- প্রাথমিক গণনাকে 0 হিসাবে নিন।
- i=N-97 থেকে i<=N পর্যন্ত লুপ ব্যবহার করে ট্র্যাভার্স।
- অঙ্কের যোগফল temp_1=total(i) হিসাবে গণনা করুন।
- মোট(i) এর সংখ্যার যোগফলকে মোট(temp_1) হিসাবে গণনা করুন।
- temp_3 =i + temp_1 + temp_2 সেট করুন। যদি এটি N এর সমান হয় তবে বৃদ্ধির সংখ্যা।
- লুপ রিটার্নের শেষে ফলাফল হিসাবে গণনা।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int total(int num) { int res_total = 0; int res = 0; while (num > 0) { res = num % 10; res_total = res_total + res; num = num / 10; } return res_total; } int condition(int N) { int count = 0; for (int i = N - 97; i <= N; i++) { int temp_1 = total(i); int temp_2 = total(temp_1); int temp_3 = i + temp_1 + temp_2; if (temp_3 == N) { count++; } } return count; } int main() { int N = 9999; cout << "Count of numbers satisfying m + sum(m) + sum(sum(m)) = N are: " << condition(N); return 0; }
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেআউটপুট
Count of numbers satisfying m + sum(m) + sum(sum(m)) = N are: 2