কম্পিউটার

সংখ্যাগুলিকে পরিসরে গণনা করুন যাতে এটিতে অঙ্কগুলি এবং q সহ এর গুণফল C++ এ অসম হয়


রেঞ্জ ভেরিয়েবল হিসাবে দুটি সংখ্যা শুরু এবং শেষ এবং ইনপুট হিসাবে একটি পূর্ণসংখ্যা q দেওয়া হয়েছে। লক্ষ্য হল সংখ্যাগুলিকে এমন একটি পরিসরের মধ্যে খুঁজে বের করা যাতে q সহ সংখ্যা এবং এর গুণফলের কোনো সাধারণ সংখ্যা নেই৷

সংখ্যাটি 5 এবং q 3 হলে গুণফল হবে 15৷ 5 এবং 15 উভয়েরই একটি সাধারণ অঙ্ক 5৷

সংখ্যাটি 2 এবং q 5 হলে গুণফল হবে 10৷ 2 এবং 10 উভয়েরই কোনো সাধারণ সংখ্যা নেই৷

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

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

ইনপুট - শুরু =5, শেষ =10, q =2

আউটপুট - পরিসরে সংখ্যার গণনা যেমন এতে সংখ্যা এবং q সহ এর গুণফল অসম হয়:5

ব্যাখ্যা - সংখ্যাগুলো হবে:

  • 5 ( 5 * 2 =10 )
  • 6 ( 6 * 2 =12)
  • 7 ( 7 * 2 =14 )
  • 8 ( 8 * 2 =16 )
  • 9 ( 9 * 2 =18 )

ইনপুট - শুরু =20, শেষ =25, q =5

আউটপুট - পরিসরে সংখ্যার গণনা যেমন এতে অঙ্ক এবং q সহ এর গুণফল অসম হয়:2

ব্যাখ্যা - সংখ্যাগুলো হবে:

  • 22 ( 22 * ​​5 =110 )
  • 23 ( 23 * 5 =115 )

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

এই পদ্ধতিতে আমরা শুরু থেকে শেষ পর্যন্ত অতিক্রম করব এবং প্রতিটি সংখ্যা এবং তার গুণফলকে q দিয়ে স্ট্রিং-এ রূপান্তর করব। এখন একটি অ্যারে arr[26] তৈরি করুন যা বর্তমান সংখ্যার অক্ষর গণনা সংরক্ষণ করবে। এখন পণ্যের স্ট্রিং ট্র্যাভার্স করুন (বর্তমান সংখ্যা * q) এবং যদি সেই স্ট্রিংটির কোনো অক্ষরের arr[] তে অ-শূন্য মান থাকে তবে এটি সাধারণ তাই 0 ফেরত দিন। অন্যথায় 1 ফেরত দিন।

  • পরিসীমা ভেরিয়েবল এবং একটি মান q নিন।
  • ফাংশন চেক (int i, int q) একটি সংখ্যা i এবং q নেয় এবং i এবং q এর সংখ্যা অসম বা সাধারণ না হলে 1 প্রদান করে।
  • str =to_string(i) ব্যবহার করে iকে স্ট্রিংয়ে রূপান্তর করুন।
  • str_2 =to_string(temp) ব্যবহার করে পণ্য ( temp=q*i ) কে স্টিং-এ রূপান্তর করুন।
  • str এর অক্ষর গণনার জন্য ফ্রিকোয়েন্সি অ্যারে অ্যারে[26] ={ 0 } নিন।
  • লুপ ব্যবহার করে ট্রাভার্স str এবং arr[str[j] - '0']++ ব্যবহার করে ফ্রিকোয়েন্সি আপডেট করুন।
  • এ ফর লুপ ব্যবহার করে str_2 ট্র্যাভ করুন এবং চেক করুন যে কোনো arr[str_2[j] - '0'] নন-জিরো, যদি হ্যাঁ তাহলে সাধারণ। রিটার্ন 0।
  • অন্যথায় 1 ফেরত দিন।
  • ফাংশন অসম (int start, int end, int q) রেঞ্জ ভেরিয়েবল এবং q নেয় এবং পরিসরে সংখ্যার গণনা প্রদান করে যাতে এতে সংখ্যা এবং q এর সাথে এর গুণফল অসম হয়।
  • প্রাথমিক গণনাকে 0 হিসাবে নিন।
  • i-start থেকে i=end পর্যন্ত লুপ ব্যবহার করে সংখ্যা অতিক্রম করুন।
  • চেক(i, q) ব্যবহার করে নির্ণয় করুন i সংখ্যা এবং q সহ এর গুণফলের কোন সংখ্যা সাধারণ নেই। যদি হ্যাঁ তাহলে ইনক্রিমেন্ট কাউন্ট।
  • শেষে ফলাফল হিসাবে গণনা করুন।

উদাহরণ

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

int check(int i, int q) {
   string str = to_string(i);
   int length = str.size();
   int arr[26] = {
      0
   };

   int temp = i * q;
   string str_2 = to_string(temp);
   int length_2 = str_2.size();
   for (int j = 0; j < length; j++) {
      arr[str[j] - '0']++;
   }
   for (int j = 0; j < length_2; j++) {
      if (arr[str_2[j] - '0']) {
         return 0;
      }
   }
   return 1;
}

int unequal(int start, int end, int q) {
   int count = 0;

   for (int i = start; i <= end; i++) {
      if (check(i, q)) {
         count++;
      }
   }
   return count;
}
int main() {
   int start = 20, end = 40, q = 4;
   cout << "Count of numbers in range such that digits in it and it's product with q are unequal are: " << unequal(start, end, q);
   return 0;
}

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

উৎপন্ন করবে

আউটপুট

Count of numbers in range such that digits in it and it's product with q are unequal are: 1

  1. অবিন্যস্ত জোড়া (i,j) গণনা করুন যাতে a[i] এবং a[j] এর গুণফল C++ এ দুটির শক্তি

  2. উপাদানগুলিকে গণনা করুন যাতে C++ এ X এর থেকে বেশি বা সমান মান সহ ঠিক X উপাদান রয়েছে

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

  4. C++-এ Bitwise AND সংখ্যার পরিসর