কম্পিউটার টিউটোরিয়াল

রেঞ্জে সংখ্যা এবং তার q দিয়ে গুণফলের ডিজিট অসমান হলে সংখ্যা গণনা (C++)

দুটি নম্বর start এবং end রেঞ্জ ভেরিয়েবল এবং একটি ইন্টিজার q ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হল রেঞ্জে যেসব নম্বরের সাথে তার q-দিয়ে গুণফলে কোনো কমন ডিজিট নেই, তাদের সংখ্যা বের করা।

যদি নম্বর ৫ এবং q=3 হয়, গুণফল ১৫। উভয়ে ৫ কমন ডিজিট।

যদি নম্বর ২ এবং q=5 হয়, গুণফল ১০। কমন ডিজিট নেই।

উদাহরণ দিয়ে বোঝা যাক

উদাহরণ ১

ইনপুট - start = 5, end = 10, q = 2

আউটপুট - ডিজিট অসমান হলে সংখ্যা: ৫

ব্যাখ্যা - সংখ্যাগুলো: ৫ (৫×২=১০), ৬ (১২), ৭ (১৪), ৮ (১৬), ৯ (১৮)।

উদাহরণ ২

ইনপুট - start = 20, end = 25, q = 5

আউটপুট - ডিজিট অসমান হলে সংখ্যা: ২

ব্যাখ্যা - সংখ্যাগুলো: ২২ (২২×৫=১১০), ২৩ (১১৫)।

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

start থেকে end পর্যন্ত ট্রাভার্স করে প্রতিটি নম্বর এবং তার q দিয়ে গুণফল স্ট্রিংএ কনভার্ট করা হয়। অ্যারে arr[26]-এ বর্তমান নম্বরের ক্যারেক্টার ফ্রিকোয়েন্সি সংরক্ষণ করা হয়। গুণফলের স্ট্রিং ট্রাভার্স করে যদি কোনো ক্যারেক্টার ফ্রিকোয়েন্সি নন-জিরো হয় তবে কমন ডিজিট আছে, ০ রিটার্ন করুন। অন্যথায় ১ রিটার্ন করুন।

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

উদাহরণ কোড

#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) গণনা

  2. C++-এ X এলিমেন্ট যারা এক্স্যাক্টলি X সংখ্যক ≥X এলিমেন্ট রাখে অ্যারেতে

  3. C++-এ অদ্বিতীয় ডিজিটযুক্ত সংখ্যা গণনা

  4. C++-এ সংখ্যা পরিসরের বিটওয়াইজ AND