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

C++-এ একটি রেঞ্জে ইউনারি নাম্বারগুলোর সংখ্যা গণনা


দুটি সংখ্যা start এবং end দেওয়া আছে যেগুলো একটি রেঞ্জ নির্দেশ করে। লক্ষ্য হলো [start, end] রেঞ্জে কতগুলো ইউনারি নম্বর আছে সেটি বের করা।

একটি সংখ্যা ইউনারি কিনা চেক করতে পারি নিচের ধাপগুলো অনুসরণ করে: যদি সংখ্যা ১৩ নিই, তবে ১2 + ৩2 = ১০, তারপর ১2 + ০2 = ১। এইভাবে চূড়ান্ত যোগফল ১ হলে সেটি ইউনারি।

উদাহরণ ১

ইনপুট

start=1 end=20

আউটপুট

একটি রেঞ্জে ইউনারি নম্বরগুলোর সংখ্যা: 5

ব্যাখ্যা

সংখ্যাগুলো: ১, ৭, ১০, ১২, এবং ১৩

উদাহরণ ২

ইনপুট

start=50 end=100

আউটপুট

একটি রেঞ্জে ইউনারি নম্বরগুলোর সংখ্যা: 7

ব্যাখ্যা

সংখ্যাগুলো: ৫৯, ৬৩, ৬৭, ৭৪, ৭৫, ৭৮, এবং ৮৯

প্রয়োগ করা পদ্ধতি

১ থেকে ৯ এর মধ্যে ১ এবং ৭ ইউনারি। বাকি সংখ্যাগুলোর জন্য ডিজিটগুলোর বর্গের যোগফল নেয়া হয় যতক্ষণ না ১ আসে। এই প্রসেস রেঞ্জের সব সংখ্যার জন্য চালানো হয়। এইভাবে পাওয়া সব ইউনারি নম্বরের জন্য কাউন্ট বাড়ানো হয়।

  • দুটি ইন্টিজার start, end ইনপুট নিন।

  • check_unary(int number) ফাংশনটি true রিটার্ন করে যদি মানটি ইউনারি হয়, অন্যথায় false।

  • Unary_range(int start, int end) ফাংশনটি রেঞ্জ ভেরিয়েবল গ্রহণ করে রেঞ্জে ইউনারি নম্বরের সংখ্যা রিটার্ন করে।

  • আরম্ভিক কাউন্ট ০। for লুপ দিয়ে i=start থেকে end পর্যন্ত ট্রুভার্স করুন। যদি check_unary(i) true রিটার্ন করে তবে কাউন্ট বাড়ান।

  • check_unary(int number)-এর ভিতরে অস্থায়ী ভেরিয়েবল count নিন।

  • যদি N ১ বা ৭ হয়, true রিটার্ন করুন। ১০-র চেয়ে ছোট (number/10 == 0) বাকি সব সংখ্যার জন্য false রিটার্ন করুন।

  • while লুপে ডিজিটগুলোর বর্গের যোগফল ক্যালকুলেট করুন।

  • ফিরে check_unary(int number) কল করুন এভাবে চলমান যোগফলের জন্য যতক্ষণ না যোগফল ১ হয়।

  • কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।

উদাহরণ কোড

#include <iostream> 
using namespace std; 

bool check_unary(int number) {
    int total; 
    if (number == 1) {
        return true; 
    } else if(number == 7) {
        return true; 
    } else if (number / 10 == 0) {
        return false; 
    } 
    
    while (number != 0) {
        int temp = number % 10; 
        total = total + temp * temp; 
        number = number / 10; 
    } 
    
    check_unary(total); 
} 

int Unary_range(int start, int end) {
    int count = 0; 
    for (int i = start; i <= end; i++) {
        if (check_unary(i) == 1) {
            count++; 
        } 
    } 
    return count; 
} 

int main() { 
    int start = 200, end = 400; 
    cout << "একটি রেঞ্জে ইউনারি নম্বরগুলোর সংখ্যা: " << Unary_range(start, end); 
    return 0; 
}

আউটপুট

উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:

একটি রেঞ্জে ইউনারি নম্বরগুলোর সংখ্যা: 31

  1. C++-এ সমতল তলে পারালেলোগ্রাম গণনা: মিডপয়েন্ট পদ্ধতি

  2. C++-এ নির্দিষ্ট রেঞ্জে সবচেয়ে ছোট ফ্যাক্টর K হয় এমন সংখ্যা গণনা

  3. C++-এ ১ থেকে n পর্যন্ত ৪ ডিজিট থাকা সংখ্যা গণনা (Count Numbers with Digit 4)

  4. 1 থেকে N পর্যন্ত অলমোস্ট প্রাইম সংখ্যার সংখ্যা বের করা C++-তে