কম্পিউটার

পরিসরে সংখ্যার গণনা যেখানে C++ এ সংখ্যাটিতে K অ-শূন্য সংখ্যার বেশি নেই


আমাদেরকে ভেরিয়েবল থেকে শুরু করে একটি পূর্ণসংখ্যা রেঞ্জ দেওয়া হয়েছে চলুন বলি ভেরিয়েবলের শেষ পর্যন্ত শুরু করুন এবং একটি ভেরিয়েবল k এবং কাজটি হল পরিসরের সংখ্যা গণনা করা যাতে সংখ্যাগুলিতে 'k' অ-শূন্যের বেশি না থাকে। সংখ্যা।

উদাহরণস্বরূপ

ইনপুট - int start =50, end =100 এবং K =2;

আউটপুট - পরিসরে সংখ্যার গণনা যেখানে সংখ্যাটিতে K-এর চেয়ে বেশি শূন্য সংখ্যা নেই:50

ব্যাখ্যা - পরিসরটি 50 থেকে 100 পর্যন্ত শুরু হয় এবং আমাদেরকে 2 হিসাবে k দেওয়া হয়েছে। আমরা দেখতে পাচ্ছি, 50 থেকে 100-এর মধ্যে সমস্ত সংখ্যায় 2-অঙ্কের সংখ্যা রয়েছে যা 100 নম্বরটি ছাড়া 2টির বেশি শূন্য সংখ্যা ধারণ করা অসম্ভব করে তোলে। একটি 3-সংখ্যার সংখ্যা কিন্তু এটিতে 2 শূন্যও থাকবে তার থেকে বেশি নয় তাই গণনা 50।

ইনপুট - int start =50, end =100 এবং K =1;

আউটপুট - পরিসরে সংখ্যার গণনা যেখানে সংখ্যাটিতে K অ শূন্যের বেশি থাকে না

সংখ্যা হল:5

ব্যাখ্যা - পরিসরটি 50 থেকে 100 পর্যন্ত শুরু হয় এবং আমাদেরকে 1 হিসাবে k দেওয়া হয়েছে। আমরা দেখতে পাচ্ছি, 50 থেকে 100-এর মধ্যে সমস্ত সংখ্যায় 2-অঙ্কের সংখ্যা রয়েছে তাই 1 বা k-এর বেশি নয় এমন সংখ্যাগুলি 50 নয়। , 60, 70, 80 এবং 90 তাই গণনা হল 5।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • ভেরিয়েবলের শুরু থেকে ভেরিয়েবল শেষ পর্যন্ত পূর্ণসংখ্যার একটি পরিসর তৈরি করুন এবং k ঘোষণা করুন এবং মানটি ইনপুট করুন। আরও প্রক্রিয়াকরণের জন্য ফাংশনে ডেটা পাস করুন।
  • ভেক্টর টাইপের একটি ভেরিয়েবল তৈরি করুন, আসুন vec বলি।
  • স্টার্ট লুপ যতক্ষণ না ভ্যালু ভ্যারিয়েবল স্টার্টের ভিতরে থাকে। এখন, কিছুক্ষণের মধ্যে ভ্যাল % 10 হিসাবে মানটিকে ভেক্টরে পুশ করুন এবং val / 10 হিসাবে সেট করুন৷
  • এসটিএল-এ রিভার্স ফাংশনকে কল করুন vec.begin() এবং vec.end() এর যুক্তি হিসেবে।
  • মেমসেট ব্যবহার করে অ্যারের মানগুলি -1 হিসাবে সেট করুন।
  • চেক_ভাল (0, 0, 0, vec) ফেরত দিন যা একটি ফাংশন যা পরীক্ষা করবে যে সংখ্যাগুলি শূন্য নয় কি না।
  • চেক_ভাল ফাংশনের ভিতরে-:
    • একটি ভেক্টরের আকারের সমান IF স্থানটি পরীক্ষা করুন তারপর IF temp চেক করুন <=k তারপর 1 দিন বা 0 দিন৷
    • চেক করুন IF arr[place][temp][set_val] -1 এর সমান না তারপর arr[place][temp][set_val]-এ মান দিন।
    • ফলাফল সংরক্ষণ করতে ভেরিয়েবল ঘোষণা করুন এবং এটি 0 এ সেট করুন।
    • একটি ভেরিয়েবল ভ্যাল ঘোষণা করুন এবং এটিকে 9 এ সেট করুন IF set_val সমান 1 ELSE এটিকে i++ এ সেট করুন
    • 0 থেকে ভ্যালু পর্যন্ত লুপ শুরু করুন
    • লুপের ভিতরে temp_2 সেট করুন temp হিসাবে এবং চেক করুন IF 1 সমান না 0 তারপর temp_2 এর মান 1 দ্বারা বৃদ্ধি করুন এবং temp_3 কে set_val হিসাবে সেট করুন এবং i চেক করুন vec[place] এর চেয়ে কম তারপর temp_3 কে 1 হিসাবে সেট করুন
    • ফাংশন check_val(place + 1, temp_2, temp_3, vec) ফাংশনে পুনরাবৃত্ত কল হিসাবে গণনার মান সেট করুন
    • রিটার্ন arr[place][temp][set_val] সমান গণনা।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int arr[20][20][2];
int K;
int check_val(int place, int temp, int set_val, vector < int > vec) {
   if (place == vec.size()) {
      if (temp <= K) {
         return 1;
      }
      return 0;
   }
   if (arr[place][temp][set_val] != -1) {
      return arr[place][temp][set_val];
   }
   int count = 0;
   int val = (set_val ? 9 : vec[place]);
   for (int i = 0; i <= val; i++) {
      int temp_2 = temp;
      if (i != 0) {
         temp_2++;
      }
      int temp_3 = set_val;
      if (i < vec[place]) {
         temp_3 = 1;
      }
      count += check_val(place + 1, temp_2, temp_3, vec);
   }
   return arr[place][temp][set_val] = count;
}

int Not_more_k(int val) {
   vector < int > vec;
   while (val) {
      vec.push_back(val % 10);
      val = val / 10;
   }
   reverse(vec.begin(), vec.end());
   memset(arr, -1, sizeof(arr));
   return check_val(0, 0, 0, vec);
}
int main() {
   int start = 50, end = 100;
   K = 2;
   int count = Not_more_k(end) - Not_more_k(start);
   cout << "Count of Numbers in Range where the number does not contain more than K non zero digits are: " << count;
   return 0;
}

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে

আউটপুট

Count of Numbers in Range where the number does not contain more than K non zero digits are: 50

  1. C++ এ K হিসাবে ক্ষুদ্রতম ফ্যাক্টর সহ একটি পরিসরে সমস্ত সংখ্যা গণনা করুন

  2. C++ এ d সংখ্যা আছে এমন সংখ্যাটি খুঁজুন

  3. একটি সংখ্যায় সংখ্যার গণনা খুঁজুন যা সংখ্যাটিকে C++ এ ভাগ করে

  4. প্রতিটি সারি থেকে এমন একটি সংখ্যা নির্বাচন করা যায় কিনা পরীক্ষা করুন যাতে সংখ্যার xor C++ এ শূন্যের চেয়ে বেশি হয়