অঙ্কের সংখ্যা এবং যোগফল হিসাবে একটি ধনাত্মক সংখ্যা দেওয়া হয়েছে। লক্ষ্য হল ইনপুট যোগফলের সমান অঙ্কের সমষ্টি আছে এমন সমস্ত d সংখ্যার সংখ্যা খুঁজে বের করা। অগ্রণী শূন্য থাকা সংখ্যাগুলিকে d সংখ্যার সংখ্যা হিসাবে বিবেচনা করা হবে না।
ব্যাপ্তিগুলি হল 1 থেকে 100 এর মধ্যে অঙ্ক এবং 1 থেকে 500 এর মধ্যে যোগফল৷
আসুন উদাহরণ দিয়ে বোঝা যাক।
উদাহরণস্বরূপ
ইনপুট - সংখ্যা =3, ডিজি_সম =3
আউটপুট - n সংখ্যার সংখ্যার সংখ্যা যার অঙ্কের যোগফল প্রদত্ত যোগফলের সমান:6
ব্যাখ্যা - 3 হিসাবে অঙ্কের সমষ্টি সহ তিনটি সংখ্যার সংখ্যা হল:
102, 111, 120, 201, 210, এবং 300৷
ইনপুট - সংখ্যা =4 ডিজি_সমষ্টি =2
আউটপুট - n সংখ্যার সংখ্যার সংখ্যা যার অঙ্কের যোগফল প্রদত্ত যোগফলের সমান:4
ব্যাখ্যা - 2 হিসাবে অঙ্কের সমষ্টি সহ চারটি সংখ্যার সংখ্যা হল :
1001, 1010, 1100, এবং 2000।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
এই পদ্ধতিতে আমরা প্রথম d সংখ্যার সংখ্যা থেকে অতিক্রম করব এবং প্রথম সংখ্যাটি খুঁজে পাব যার অঙ্কের যোগফল প্রদত্ত যোগফলের সমান। তারপর সংখ্যাগুলিকে 9 দ্বারা বৃদ্ধি করুন যতক্ষণ না আমরা প্রদত্ত যোগফলের চেয়ে বেশি অঙ্কের যোগফল খুঁজে পাই। একবার ইনপুট যোগফলের চেয়ে বড় অঙ্কের যোগফল পাওয়া গেলে সংখ্যাটি 1 দ্বারা বৃদ্ধি করুন এবং ইনপুট যোগফল হিসাবে যোগফল সহ পরবর্তী সংখ্যাটি সন্ধান করুন। শেষ ডি ডিজিট নম্বর পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি করুন।
- ইনপুট হিসাবে অঙ্কের সংখ্যা এবং অঙ্কের যোগফল নিন।
- ফাংশন digits_sum(int digits, int digi_sum) উভয় ইনপুট মান নেয় এবং n সংখ্যার সংখ্যার গণনা প্রদান করে যার অঙ্কের যোগফল একটি প্রদত্ত যোগফলের সমান।
- প্রাথমিক গণনাকে 0 হিসাবে নিন।
- প্রথম সংখ্যাটিকে Left =pow (10, সংখ্যা - 1) হিসাবে নিন। এবং রাইট =pow(10, ডিজিট) - 1 (অর্থাৎ অঙ্কের জন্য 10 এবং 99 =2) হিসাবে ব্যাপ্তির শেষ সংখ্যা।
- বাম থেকে ডানে কিছুক্ষণ লুপ ব্যবহার করে।
- প্রথম=0 এবং শেষ=i নিন।
- প্রতিটি i (শেষের) জন্য ডানদিকের সংখ্যাটি নিন (শেষ % 10) এবং প্রথমে যোগ করুন। পরবর্তী পুনরাবৃত্তির জন্য শেষটি 10 দ্বারা কমিয়ে দিন।
- যদি প্রথমে digi_sum-এর সমান হয় তাহলে পরবর্তী পুনরাবৃত্তির জন্য সংখ্যা বৃদ্ধি করুন এবং i 9 দ্বারা আপডেট করুন।
- অন্যথায় i 1 দ্বারা বৃদ্ধি করুন।
- সমস্ত লুপের শেষে আমাদের এমন সংখ্যা হিসাবে গণনা করা হবে যেগুলির অঙ্কের যোগফল digi_sum-এর সমান।
- ফলাফল হিসাবে রিটার্ন গণনা।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int digits_sum(int digits, int digi_sum) { int count = 0; int Left = pow(10, digits - 1); int right = pow(10, digits) - 1; int i = Left; while (i <= right) { int first = 0; int last = i; while (last != 0) { first = first + last % 10; last = last / 10; } if (first == digi_sum) { count++; i = i + 9; } else { i++; } } return count; } int main() { int digits = 5; int digi_sum = 7; cout << "Count of n digit numbers whose sum of digits equals to given sum are: " << digits_sum(digits, digi_sum); return 0; }
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেআউটপুট
Count of n digit numbers whose sum of digits equals to given sum are: 5