কম্পিউটার

n সংখ্যার সংখ্যার সংখ্যা যার অঙ্কের যোগফল C++ এ প্রদত্ত যোগফলের সমান


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

  1. C++ এ একটি প্রদত্ত পরিসরে ফ্যাক্টরিয়াল সংখ্যা গণনা করুন

  2. C++ এ অনন্য সংখ্যার সাথে সংখ্যা গণনা করুন

  3. সমস্ত n-সংখ্যার সংখ্যা প্রিন্ট করুন যার অঙ্কের যোগফল C++ এ প্রদত্ত যোগফলের সমান

  4. দুটি সংখ্যা খুঁজুন যার যোগফল এবং GCD C++ এ দেওয়া আছে