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

C++-এ দুটি সংখ্যার ক্ষমতার যোগফল হিসেবে বাউন্ডের নিচে সব পূর্ণসংখ্যা প্রিন্ট করা

এই সমস্যায় দুটি সংখ্যা a এবং b এবং একটি পূর্ণসংখ্যা বাউন্ড দেওয়া আছে। আমাদের বাউন্ডের চেয়ে ছোট সব মান প্রিন্ট করতে হবে যা a এবং b-এর ক্ষমতার যোগফল হিসেবে প্রকাশ করা যায়।

Bound >= a^i + b^j

উদাহরণ

ইনপুট: a=2, b=3, bound=8
আউটপুট: 2 3 4 5 7

এই সমস্যাটি সমাধানের জন্য দুটি ভেরিয়েবল i এবং j দিয়ে নেস্টেড লুপ ব্যবহার করা হবে ০ থেকে শুরু করে। বাহ্যিক লুপের শর্ত x^i = bound এবং অভ্যন্তরীণ লুপের শর্ত x^i + y^j > bound। অভ্যন্তরীণ লুপের প্রতিটি ইটারেশনে x^i + y^j এর মান একটি সর্টেড লিস্টে সংরক্ষণ করা হবে যেটে এমন সব মান থাকবে। শেষে লিস্টের সব মান প্রিন্ট করা হবে।

বাস্তবায়ন

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

void powerSum(int x, int y, int bound) { 
    set<int> sumOfPowers; 
    vector<int> powY; 
    int i; 
    powY.push_back(1); 
    for (i = y; i < bound; i = i * y) 
        powY.push_back(i); 
    i = 0; 
    while (true) { 
        int powX = pow(x, i); 
        if (powX >= bound) 
            break; 
        for (auto j = powY.begin(); j != powY.end(); ++j) { 
            int num = powX + *j; 
            if (num <= bound) 
                sumOfPowers.insert(num); 
            else 
                break; 
        } 
        i++; 
    } 
    set<int>::iterator itr; 
    for (itr = sumOfPowers.begin(); itr != sumOfPowers.end(); itr++) { 
        cout << *itr << " "; 
    } 
} 

int main() { 
    int x = 2, y = 3, bound = 25; 
    cout << "Sum of powers of " << x << " and " << y << " less than " << bound << " are :\n"; 
    powerSum(x, y, bound); 
    return 0; 
}

আউটপুট

Sum of powers of 2 and 3 less than 25 are :
2 3 4 5 7 9 10 11 13 17 19 25
  1. C++-এ লিফ নোড থেকে দূরত্ব k-এ থাকা সব নোড প্রিন্ট করা

  2. যোগফল এবং GCD দিয়ে দুটি সংখ্যা বের করা (C++)

  3. C++-এ দেয়া ভ্যালুর সমান যোগফল সম্পন্ন সব ইউনিক ট্রিপলেট বের করা

  4. C++ প্রোগ্রাম: দুটি সংখ্যা যোগ করা (Addition)