অঙ্কের সংখ্যা এবং যোগফল হিসাবে একটি ধনাত্মক সংখ্যা দেওয়া হয়েছে। লক্ষ্য হল ইনপুট যোগফলের সমান অঙ্কের সমষ্টি আছে এমন সমস্ত 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