इस समस्या में, हमें दो संख्याएँ a और b और एक पूर्णांक बाउंड दिया जाता है और हमें बाइंडिंग से कम सभी मानों को प्रिंट करना होता है जो कि a और b के वर्गों का योग होता है .
Bound >= ai + bj
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -
Input: a=2, b=3, bound=8 Output: 2 3 4 5 7
इस समस्या को हल करने के लिए, हम 0 से दो चर i और j का उपयोग करके नेस्टेड लूप का उपयोग करेंगे। बाहरी लूप की समाप्ति स्थिति होगी xi =बाउंड और इनर लूप की एंडिंग कंडीशन होगी xi + yj> बाउंड . आंतरिक लूप के प्रत्येक पुनरावृत्ति के लिए, हम xi + yi के मान को एक क्रमबद्ध सूची में संग्रहीत करेंगे जिसमें ऐसे सभी मान शामिल हैं। और फिर अंत में सूची के सभी मान प्रिंट करें।
उदाहरण
हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम -
#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है