কম্পিউটার

বর্ণমালার গণনা যার ASCII মান C++ এ N এর সংখ্যা দিয়ে তৈরি করা যেতে পারে


ইনপুট হিসাবে একটি ধনাত্মক সংখ্যা ধারণকারী একটি দীর্ঘ ভেরিয়েবল দেওয়া হয়েছে। লক্ষ্য হল বর্ণমালার গণনা খুঁজে বের করা যার ASCII মান সংখ্যা সংখ্যার অঙ্কগুলিতে উপস্থিত রয়েছে৷

সংখ্যা থেকে যেকোনো দুটি সংখ্যা বেছে নিন এবং সেগুলিকে এমনভাবে সাজান যাতে তারা ইংরেজি বর্ণমালার একটি ASCII মান তৈরি করে। A-Z এর ASCII মান 65 থেকে 90 থেকে শুরু হয় এবং a-z এর ASCII মান 97 থেকে 122 থেকে শুরু হয়।

বাছাই করা মোট সংখ্যা হবে 26+26=52।

আসুন উদাহরণ দিয়ে বোঝা যাক।

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

ইনপুট - N_digits =163465

আউটপুট - বর্ণমালার সংখ্যা যার ASCII মানগুলি N এর সংখ্যা দিয়ে তৈরি করা যেতে পারে:2

ব্যাখ্যা - 163465-এ উপস্থিত ASCII মানগুলি শুধুমাত্র 65 এবং 66। তাই শুধুমাত্র দুটি বর্ণমালা সম্ভব।

ইনপুট - N_digits =902349

আউটপুট - বর্ণমালার সংখ্যা যার ASCII মানগুলি N এর সংখ্যা দিয়ে তৈরি করা যেতে পারে:2

ব্যাখ্যা - 902349-এ উপস্থিত ASCII মানগুলি শুধুমাত্র 90 এবং 99। তাই শুধুমাত্র দুটি বর্ণমালা সম্ভব।

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

এই পদ্ধতিতে আমরা প্রথমে ইনপুট নম্বরে সংখ্যার ফ্রিকোয়েন্সি সংরক্ষণের জন্য একটি ফ্রিকোয়েন্সি অ্যারে মোট [10] করব। এখন 65 থেকে 90 এবং 97 থেকে 122 রেঞ্জের প্রতিটি সংখ্যা i নিন। i এর সংখ্যা বের করুন এবং ফ্রিকোয়েন্সি অ্যারে অনুসন্ধান করুন। যদি i-এর সমস্ত সংখ্যা ফ্রিকোয়েন্সি অ্যারেতে উপস্থিত থাকে ( মোট [বর্তমান সংখ্যা] সমস্ত অঙ্কের জন্য অ-শূন্য হবে) তাহলে সংখ্যা বৃদ্ধি।

  • ইনপুট হিসাবে দীর্ঘ int N_digits নিন।
  • ফাংশন চেক (int arr[], int val) ফ্রিকোয়েন্সি অ্যারে অ্যারে[] এবং ASCII নম্বর ভ্যালকে ইনপুট হিসাবে নেয় এবং যদি arr[]-এর সংখ্যা থেকে ভ্যাল তৈরি করা যায় তবে তা সত্য প্রদান করে।
  • লুপের জন্য ব্যবহার করে ফ্রিকোয়েন্সি অ্যারের একটি কপি তৈরি করুন মোট[10]।
  • এখন কিছুক্ষণ লুপ ব্যবহার করে, ভ্যালের প্রতিটি ডিজিট বের করুন এবং মোট সার্চ করুন[]।
  • যদি মোট [ডিজিট] ​​0 হয় তাহলে মিথ্যা দিন, অন্যথায় এটি ব্যবহার করুন এবং এর সংখ্যা 1 কমিয়ে দিন।
  • পরবর্তী LSB-এর জন্য ভ্যাল কমিয়ে দিন।
  • যদি সম্পূর্ণরূপে চালানো হয়, তাহলে মোট সংখ্যা থেকে ভ্যাল তৈরি করা যেতে পারে[] তাই সত্য ফেরত দিন।
  • ফাংশন ASCII_N(লং লং int N_digits) ইনপুট নম্বর নেয় এবং বর্ণমালার গণনা প্রদান করে যার ASCII মানগুলি N-এর সংখ্যাগুলির সাথে গঠিত হতে পারে।
  • প্রাথমিক গণনাকে 0 হিসাবে নিন এবং 0 সহ ফ্রিকোয়েন্সি অ্যারে মোট[10] শুরু করুন।
  • while loop ব্যবহার করে N_digits-এ ডিজিটের জন্য ফ্রিকোয়েন্সি অ্যারে পপুলেট করুন। মান হিসাবে LSB বের করুন =N_digits % 10 এবং মোট [মান] 1 দ্বারা বৃদ্ধি করুন।
  • এন_ডিজিট 10 কমিয়ে দিন।
  • এখন লুপ ব্যবহার করে 97 থেকে 122 এবং 65 থেকে 90 পর্যন্ত বর্ণমালার ASCII সংখ্যা অতিক্রম করুন।
  • যদি কোনো চেক (মোট, i) সত্য ফেরত দেয় তাহলে ইনক্রিমেন্ট গণনা।
  • লুপের জন্য উভয়ের শেষে ফলাফল হিসাবে গণনা ফেরত দেয়।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;

bool check(int arr[], int val) {
   int total[10];
   for (int i = 0; i < 10; i++) {
      total[i] = arr[i];
   }
   while (val > 0) {
      int values = val % 10;
      if (total[values] == 0) {
         return false;
      } else {
         total[values]--;
      }
      val = floor(val / 10);
   }
   return true;
}

int ASCII_N(long long int N_digits) {
   int count = 0;
   int total[10] = {
      0
   };

   while (N_digits > 0) {
      int values = N_digits % 10;
      total[values]++;
      N_digits = floor(N_digits / 10);
   }
   for (int i = 97; i <= 122; i++) {
      if (check(total, i)) {
         count++;
      }
   }
   for (int i = 65; i < 91; i++) {
      if (check(total, i)) {
         count++;
      }
   }
   return count;
}
int main() {
   long long int N_digits = 251326;
   cout << "Count of alphabets whose ASCII values can be formed with the digits of N are: " << ASCII_N(N_digits);
}

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

উৎপন্ন করবে

আউটপুট

Count of alphabets whose ASCII values can be formed with the digits of N are: 2

  1. k সংখ্যা সহ ভাগ্যবান সংখ্যার সংখ্যা গণনা করতে C++ কোড

  2. একটি সংখ্যা X খুঁজুন যার অঙ্কের যোগফল C++ এ N এর সমান

  3. নোডগুলি গণনা করুন যার সমষ্টি X এর সাথে C++ এ একটি ফিবোনাচি সংখ্যা

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