# Solving Leetcode Interviews in Seconds with AI: Powerful Integers


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "970" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> Given three integers x, y, and bound, return a list of all the powerful integers that have a value less than or equal to bound. An integer is powerful if it can be represented as xi + yj for some integers i >= 0 and j >= 0. You may return the answer in any order. In your answer, each value should occur at most once.   Example 1:  Input: x = 2, y = 3, bound = 10 Output: [2,3,4,5,7,9,10] Explanation: 2 = 20 + 30 3 = 21 + 30 4 = 20 + 31 5 = 21 + 31 7 = 22 + 31 9 = 23 + 30 10 = 20 + 32  Example 2:  Input: x = 3, y = 5, bound = 15 Output: [2,4,6,8,10,14]    Constraints:  1 <= x, y <= 100 0 <= bound <= 106  

	# Explanation
	Here's the approach to solve this problem:

*   **Iterate and Calculate:** Iterate through possible values of `i` and `j` such that `x^i + y^j` is less than or equal to `bound`.
*   **Use Sets for Uniqueness:** Store the calculated powerful integers in a set to ensure uniqueness.
*   **Optimization:** Break inner/outer loops when `x^i` or `y^j` exceeds the bound to avoid unnecessary calculations.

*   **Runtime & Storage Complexity:** O(log(bound)^2) runtime, O(N) storage where N is the number of powerful integers (which can be at most bound).

	
	# Code
	```python
	def powerfulIntegers(x: int, y: int, bound: int) -> list[int]:
    powerful_integers = set()
    for i in range(21):  # Maximum value of i or j will not exceed 20 because x, y >= 1 and bound <= 10^6
        a = x**i
        if a > bound:
            break
        for j in range(21):
            b = y**j
            if b > bound:
                break
            val = a + b
            if val <= bound:
                powerful_integers.add(val)
            else:
                break
    return list(powerful_integers)
	```
			
