একটি পজিটিভ নম্বর ডিজিট সংখ্যা হিসেবে এবং একটি সম দেওয়া আছে। লক্ষ্য হল d ডিজিটের যেসব সংখ্যার ডিজিট সম ইনপুট সমের সমান, তাদের সংখ্যা বের করা। লিডিং জিরো থাকা নম্বরগুলো d-ডিজিট নম্বর হিসেবে গণ্য হবে না।
রেঞ্জ: ডিজিট ১ থেকে ১০০, সম ১ থেকে ৫০০।
উদাহরণ দিয়ে বোঝা যাক
উদাহরণ ১
ইনপুট - digits = 3, digi_sum = 3
আউটপুট - n ডিজিটের সংখ্যা যাদের ডিজিট সম দেওয়া সমের সমান: ৬
ব্যাখ্যা - ৩-ডিজিট সংখ্যা যাদের ডিজিট সম ৩: ১০২, ১১১, ১২০, ২০১, ২১০, ৩০০।
উদাহরণ ২
ইনপুট - digits = 4, digi_sum = 2
আউটপুট - n ডিজিটের সংখ্যা যাদের ডিজিট সম দেওয়া সমের সমান: ৪
ব্যাখ্যা - ৪-ডিজিট সংখ্যা যাদের ডিজিট সম ২: ১০০১, ১০১০, ১১০০, ২০০০।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
এই পদ্ধতিতে প্রথম d-ডিজিট নম্বর থেকে ট্রাভার্স শুরু করে প্রথমে যে নম্বরের ডিজিট সম ইনপুট সমের সমান, সেটি বের করা হয়। তারপর ৯ দিয়ে ইনক্রিমেন্ট করা হয় যতক্ষণ না ডিজিট সম ইনপুট সমের চেয়ে বড় হয়। একবার বড় হলে ১ দিয়ে ইনক্রিমেন্ট করে আবার সমান সম والা নম্বর খুঁজা হয়। এই প্রক্রিয়া শেষ d-ডিজিট নম্বর পর্যন্ত চলে।
- ডিজিট সংখ্যা এবং ডিজিট সম ইনপুট নিন।
- ফাংশন
digits_sum(int digits, int digi_sum)ইনপুট নিতে এবং ফলাফল রিটার্ন করে। - প্রাথমিক কাউন্ট ০।
- প্রথম নম্বর
Left = pow(10, digits-1), শেষ নম্বরright = pow(10, digits)-1। i = Leftথেকেrightপর্যন্ত হোয়াইল লুপ।- প্রতিটি i-র জন্য
first=0, last=i। - হোয়াইল লুপে
last != 0:first += last%10,last/=10। - যদি
first == digi_sumহয় তবে কাউন্ট বাড়ান এবংi += 9। - অন্যথায়
i++। - সব লুপ শেষে কাউন্ট রিটার্ন করুন।
উদাহরণ কোড
#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