이 문제에서 우리는 두 개의 숫자와 b 그리고 정수 경계가 주어지고 a와 b의 제곱의 합인 바인딩보다 작은 모든 값을 인쇄해야 합니다. .
Bound >= ai + bj
문제를 이해하기 위해 예를 들어 보겠습니다 -
Input: a=2, b=3, bound=8 Output: 2 3 4 5 7
이 문제를 해결하기 위해 0에서 두 개의 변수 i와 j를 사용하여 중첩 루프를 사용할 것입니다. 외부 루프는 종료 조건이 xi =bound입니다. 내부 루프는 종료 조건 xi + yj> bound을 갖습니다. . 내부 루프의 각 반복에 대해 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