# 强整数 - Powerful Integers

``````给定两个非负整数 x 和 y，如果某一整数等于 x^i + y^j，其中整数 i >= 0 且 j >= 0，那么我们认为该整数是一个强整数。

``````

### Example:

``````输入：x = 2, y = 3, bound = 10

2 = 2^0 + 3^0
3 = 2^1 + 3^0
4 = 2^0 + 3^1
5 = 2^1 + 3^1
7 = 2^2 + 3^1
9 = 2^3 + 3^0
10 = 2^0 + 3^2

``````

``````输入：x = 3, y = 5, bound = 15

``````

## Solutions

### Solution 【BF】 ( 22ms)

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 `````` ``````class Solution { public List powerfulIntegers(int x, int y, int bound) { boolean[] nums = new boolean[bound+1]; List result = new LinkedList<>(); for (int i = 0; i <= bound; i++) { if(Math.pow(x, i)>bound) break; for (int j = 0; j < bound; j++) { if(Math.pow(x, i) + Math.pow(y, j)>bound) break; nums[(int)(Math.pow(x, i) + Math.pow(y, j))] = true; } } for (int i = 1; i < nums.length; i++) { if(nums[i]) result.add(i); } return result; } } ``````

### Solution ( 5ms)

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 `````` ``````class Solution { public List powerfulIntegers(int x, int y, int bound) { List list = new ArrayList(); if (x==1&&y==1) { if(2<=bound) list.add(2); return list; } if(x==1||y==1){ int t =0; while(Math.pow(x,t) + Math.pow(y,t)<=bound){ list.add((int)(Math.pow(x,t) + Math.pow(y,t))); t++; } return list; } for(int i =0 ; Math.pow(x,i)