hot100—84.完全平方数

方法一:动态规划
思路及算法

我们可以依据题目的要求写出状态表达式:f[i] 表示最少需要多少个数的平方来表示整数 i。

这些数必然落在区间 [1, 
i

 ]。我们可以枚举这些数,假设当前枚举到 j,那么我们还需要取若干数的平方,构成 i−j 
2
 。此时我们发现该子问题和原问题类似,只是规模变小了。这符合了动态规划的要求,于是我们可以写出状态转移方程。

f[i]=1+ 
j=1
min
⌊ 
i

 ⌋

 f[i−j 
2
 ]
其中 f[0]=0 为边界条件,实际上我们无法表示数字 0,只是为了保证状态转移过程中遇到 j 恰为  
i

  的情况合法。

同时因为计算 f[i] 时所需要用到的状态仅有 f[i−j 
2
 ],必然小于 i,因此我们只需要从小到大地枚举 i 来计算 f[i] 即可。

代码

C++
Java
C#
Golang
JavaScript
C
class Solution {
public:
    int numSquares(int n) {
        vector f(n + 1);
        for (int i = 1; i <= n; i++) {
            int minn = INT_MAX;
            for (int j = 1; j * j <= i; j++) {
                minn = min(minn, f[i - j * j]);
            }
            f[i] = minn + 1;
        }
        return f[n];
    }
};
复杂度分析

时间复杂度:O(n 
n

 ),其中 n 为给定的正整数。状态转移方程的时间复杂度为 O( 
n

 ),共需要计算 n 个状态,因此总时间复杂度为 O(n 
n

 )。

空间复杂度:O(n)。我们需要 O(n) 的空间保存状态。

方法二:数学
思路及算法

一个数学定理可以帮助解决本题:「四平方和定理」。

四平方和定理证明了任意一个正整数都可以被表示为至多四个正整数的平方和。这给出了本题的答案的上界。

同时四平方和定理包含了一个更强的结论:当且仅当 n

=4 
k
 ×(8m+7) 时,n 可以被表示为至多三个正整数的平方和。因此,当 n=4 
k
 ×(8m+7) 时,n 只能被表示为四个正整数的平方和。此时我们可以直接返回 4。

当 n

=4 
k
 ×(8m+7) 时,我们需要判断到底多少个完全平方数能够表示 n,我们知道答案只会是 1,2,3 中的一个:

答案为 1 时,则必有 n 为完全平方数,这很好判断;

答案为 2 时,则有 n=a 
2
 +b 
2
 ,我们只需要枚举所有的 a(1≤a≤ 
n

 ),判断 n−a 
2
  是否为完全平方数即可;

答案为 3 时,我们很难在一个优秀的时间复杂度内解决它,但我们只需要检查答案为 1 或 2 的两种情况,即可利用排除法确定答案。

代码

C++
Java
C#
Golang
JavaScript
C
class Solution {
public:
    // 判断是否为完全平方数
    bool isPerfectSquare(int x) {
        int y = sqrt(x);
        return y * y == x;
    }

    // 判断是否能表示为 4^k*(8m+7)
    bool checkAnswer4(int x) {
        while (x % 4 == 0) {
            x /= 4;
        }
        return x % 8 == 7;
    }

    int numSquares(int n) {
        if (isPerfectSquare(n)) {
            return 1;
        }
        if (checkAnswer4(n)) {
            return 4;
        }
        for (int i = 1; i * i <= n; i++) {
            int j = n - i * i;
            if (isPerfectSquare(j)) {
                return 2;
            }
        }
        return 3;
    }
};
复杂度分析

时间复杂度:O( 
n

 ),其中 n 为给定的正整数。最坏情况下答案为 3,我们需要运行所有的判断,而判断答案是否为 1 的时间复杂度为 O(1),判断答案是否为 4 的时间复杂度为 O(logn),剩余判断为 O( 
n

 ),因此总时间复杂度为 O(logn+ 
n

 )=O( 
n

 )。

空间复杂度:O(1)。我们只需要常数的空间保存若干变量。

下一篇题解
画解算法:279. 完全平方数
评论 (226)

排序:最热

评论


180105
来自 上海
2025.04.15
美团4月15日暑期实习一面手撕

11
展示 5 条回复
回复


乌鱼子
来自 北京
2025.02.28
有没有人和我一样写了半天,从最大的减到最小的,然后发现返回值是错误的之后恍然大悟打开解题

43
展示 4 条回复
回复


Leon

来自 浙江
2024.03.18
我尼玛,什么都能用动态规划,我规划你个大头鬼呀

195
展示 14 条回复
回复


没人比我更懂暴力算法
来自 上海
2021.06.11
老夫喜暴力算法

class Solution {
public:
    int numSquares(int n) {
        vector dp={0,1,2,3,1,2,3,4,2,1,2,3,3,2,3,4,1,2,2,3,2,3,3,4,3,1,2,3,4,2,3,4,2,3,2,3,1,2,3,4,2,2,3,3,3,2,3,4,3,1,2,3,2,2,3,4,3,3,2,3,4,2,3,4,1,2,3,3,2,3,3,4,2,2,2,3,3,3,3,4,2,1,2,3,3,2,3,4,3,2,2,3,4,3,3,4,3,2,2,3,1,2,3,4,2,3,2,3,3,2,3,4,4,2,3,3,2,2,3,4,3,1,2,3,4,2,3,4,2,3,2,3,3,3,3,4,2,2,3,3,3,3,3,4,1,2,2,3,2,2,3,4,3,2,3,3,4,2,3,4,2,3,2,3,2,3,3,4,3,1,2,3,3,2,3,4,3,3,2,3,2,2,3,4,3,2,3,3,4,3,3,4,3,2,2,3,1,2,3,4,2,3,2,3,3,2,3,4,2,3,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,1,2,3,3,2,3,4,2,2,2,3,3,3,3,4,4,2,2,3,2,2,3,4,3,3,2,3,4,3,3,4,1,2,3,3,2,2,3,4,3,2,3,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,2,1,2,3,2,2,3,4,2,3,2,3,3,3,3,4,3,2,2,3,3,3,3,4,3,2,2,3,4,2,3,4,2,3,3,3,1,2,3,4,2,3,3,3,3,2,3,4,3,2,2,3,2,3,3,4,3,3,2,3,4,2,3,4,3,2,3,3,2,3,3,4,2,1,2,3,3,2,3,4,4,2,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,3,2,3,2,2,3,4,2,3,2,3,3,2,3,4,1,2,3,3,2,2,3,4,3,2,2,3,4,3,3,4,2,3,3,3,3,2,3,4,2,2,3,3,3,3,3,4,3,2,3,3,2,3,3,4,3,1,2,3,4,2,3,4,4,2,2,3,2,3,3,4,3,2,2,3,3,2,3,4,2,3,2,3,2,3,3,4,3,3,3,3,4,2,3,4,3,2,2,3,1,2,3,4,2,3,2,3,3,2,3,4,4,3,3,3,2,3,3,4,3,2,3,3,4,2,3,4,2,3,2,3,3,3,3,4,2,2,2,3,3,3,3,4,3,1,2,3,3,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,2,3,4,3,3,2,3,3,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,1,2,2,3,2,3,3,4,2,2,2,3,3,3,3,4,2,2,3,3,2,3,3,4,3,2,3,3,4,2,3,4,3,3,2,3,2,2,3,4,3,2,3,3,3,3,3,4,4,1,2,3,2,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,3,3,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,2,3,4,3,3,2,3,4,3,3,4,3,2,2,3,1,2,3,4,2,3,3,3,3,2,3,4,3,2,3,3,2,3,3,4,3,2,2,3,4,2,3,4,3,3,2,3,3,2,3,4,2,3,3,3,3,3,3,4,2,3,2,3,2,2,3,4,3,1,2,3,4,2,3,4,3,3,2,3,2,3,3,4,3,2,2,3,3,3,3,4,4,3,2,3,3,2,3,4,3,2,3,3,4,2,3,4,3,2,3,3,2,2,3,4,2,3,2,3,3,3,3,4,1,2,3,3,2,3,3,4,3,2,2,3,4,2,3,4,2,2,2,3,3,3,3,4,2,2,2,3,3,3,3,4,3,3,2,3,2,2,3,4,3,3,3,3,4,2,3,4,2,2,3,3,3,3,3,4,3,1,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,2,2,3,3,3,3,4,2,2,3,3,3,2,3,4,4,2,2,3,2,3,3,4,3,3,2,3,4,3,3,4,3,3,2,3,1,2,3,4,2,2,3,3,3,2,3,4,3,3,2,3,2,3,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,3,3,4,2,2,3,3,3,2,3,4,3,3,3,3,3,2,3,4,3,2,2,3,4,3,3,4,4,1,2,3,2,2,3,4,2,3,2,3,3,3,3,4,2,2,3,3,2,2,3,4,3,2,2,3,4,3,3,4,3,3,3,3,3,2,3,4,2,3,3,3,3,3,3,4,4,2,2,3,3,2,3,4,3,2,2,3,4,2,3,4,1,2,3,3,2,3,3,4,3,2,3,3,3,2,3,4,2,3,2,3,2,3,3,4,3,2,3,3,4,2,3,4,3,3,2,3,2,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,3,2,3,4,3,3,4,2,1,2,3,3,2,3,4,2,2,2,3,3,3,3,4,3,2,3,3,2,2,3,4,3,3,2,3,4,2,3,4,3,3,3,3,2,2,3,4,3,2,2,3,3,3,3,4,4,3,2,3,3,3,3,4,3,2,3,3,4,3,3,4,2,2,2,3,1,2,3,4,2,3,3,3,3,2,3,4,2,3,2,3,2,3,3,4,3,3,3,3,4,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,2,2,3,3,2,3,4,3,3,2,3,4,2,3,4,3,2,3,3,2,3,3,4,2,1,2,3,3,2,3,4,3,2,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,3,3,4,2,3,2,3,3,2,3,4,4,3,3,3,2,3,3,4,3,3,2,3,4,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,3,3,3,4,1,2,3,3,2,2,3,4,3,2,2,3,4,3,3,4,2,2,2,3,3,3,3,4,3,2,2,3,3,2,3,4,3,3,3,3,2,3,3,4,3,3,3,3,4,2,3,4,3,2,2,3,2,3,3,4,2,3,2,3,3,3,3,4,2,2,3,3,3,3,3,4,3,1,2,3,4,2,3,4,3,2,2,3,3,2,3,4,2,2,3,3,3,3,3,4,4,3,2,3,2,3,3,4,3,3,2,3,4,2,3,4,3,2,3,3,2,2,3,4,3,2,2,3,3,2,3,4,2,3,3,3,3,2,3,4,3,2,3,3,4,3,3,4,2,3,3,3,1,2,3,4,2,3,2,3,3,2,3,4,3,3,2,3,2,3,3,4,3,2,2,3,4,2,3,4,4,3,3,3,2,3,3,4,2,2,3,3,3,3,3,4,3,2,2,3,2,2,3,4,3,3,3,3,4,3,3,4,3,3,3,3,2,3,3,4,3,2,2,3,3,2,3,4,4,1,2,3,3,2,3,4,3,3,2,3,4,3,3,4,3,2,2,3,3,3,3,4,2,3,2,3,3,2,3,4,2,2,3,3,2,2,3,4,3,3,3,3,4,2,3,4,2,3,2,3,3,2,3,4,2,3,3,3,3,3,3,4,3,2,2,3,2,3,3,4,3,3,2,3,4,2,3,4,1,2,2,3,2,3,3,4,3,2,3,3,3,2,3,4,2,3,2,3,2,2,3,4,3,2,3,3,4,2,3,4,3,3,3,3,2,2,3,4,2,3,2,3,3,3,3,4,4,2,3,3,3,3,3,4,3,2,2,3,4,3,3,4,2,2,2,3,3,2,3,4,3,3,3,3,3,3,3,4,3,1,2,3,2,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,3,3,4,3,3,2,3,3,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,3,2,3,2,2,3,4,3,2,3,3,3,2,3,4,2,2,2,3,3,3,3,4,3,2,2,3,4,3,3,4,3,3,2,3,1,2,3,4,2,2,3,3,3,2,3,4,4,2,3,3,2,2,3,4,3,3,3,3,4,2,3,4,4,3,3,3,2,3,3,4,2,2,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,3,2,3,4,3,3,4,3,2,3,3,2,3,3,4,2,3,3,3,3,3,3,4,3,3,3,3,2,2,3,4,3,1,2,3,4,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,2,2,2,3,3,2,3,4,3,3,2,3,4,2,3,4,3,2,3,3,3,3,3,4,3,3,2,3,3,2,3,4,4,3,2,3,2,3,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,3,3,4,2,3,2,3,3,2,3,4,1,2,3,3,2,3,3,4,3,2,3,3,4,2,3,4,2,3,2,3,3,3,3,4,2,2,2,3,3,3,3,4,3,3,2,3,2,2,3,4,3,3,3,3,4,3,3,4,4,2,3,3,3,2,3,4,3,2,2,3,3,2,3,4,2,3,3,3,3,2,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,3,3,4,3,1,2,3,3,2,3,4,4,3,2,3,2,3,3,4,3,2,2,3,4,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,2,3,4,3,3,2,3,3,2,3,4,3,3,2,3,4,3,3,4,2,2,3,3,2,3,3,4,2,2,3,3,3,3,3,4,3,2,2,3,3,3,3,4,3,2,2,3,4,3,3,4,3,2,3,3,1,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,2,2,3,4,2,3,4,3,3,2,3,3,3,3,4,2,2,3,3,3,3,3,4,4,2,3,3,2,2,3,4,3,2,3,3,4,2,3,4,2,3,2,3,2,3,3,4,3,3,2,3,3,3,3,4,2,3,2,3,2,2,3,4,3,3,3,3,4,2,3,4,3,1,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,3,3,3,2,3,4,2,2,2,3,3,3,3,4,3,2,2,3,2,3,3,4,3,3,3,3,4,2,3,4,3,2,3,3,2,3,3,4,3,2,3,3,3,2,3,4,4,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,1,2,2,3,2,2,3,4,2,2,2,3,3,3,3,4,2,3,3,3,3,3,3,4,3,2,2,3,4,2,3,4,2,3,3,3,2,2,3,4,2,3,3,3,3,2,3,4,3,2,3,3,3,2,3,4,3,3,2,3,4,3,3,4,2,3,3,3,2,3,3,4,3,2,2,3,3,2,3,4,2,2,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,1,2,3,2,2,3,4,3,3,2,3,3,3,3,4,4,2,3,3,2,2,3,4,3,2,2,3,4,3,3,4,3,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,2,3,2,3,2,3,3,4,3,3,2,3,4,3,3,4,3,2,2,3,2,3,3,4,3,2,2,3,3,2,3,4,3,3,2,3,3,3,3,4,3,3,3,3,4,2,3,4,4,3,2,3,1,2,3,4,2,3,3,3,3,2,3,4,2,3,3,3,2,3,3,4,3,2,2,3,4,2,3,4,3,2,3,3,3,2,3,4,2,3,3,3,3,3,3,4,4,2,3,3,2,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,3,3,4,3,3,2,3,3,3,3,4,3,3,2,3,3,2,3,4,3,3,3,3,4,3,3,4,2,2,2,3,3,2,3,4,2,1,2,3,3,2,3,4,3,2,2,3,2,3,3,4,3,2,3,3,4,2,3,4,2,3,2,3,2,3,3,4,3,2,3,3,3,2,3,4,3,3,2,3,2,2,3,4,3,3,2,3,4,3,3,4,3,2,3,3,3,3,3,4,2,2,3,3,3,2,3,4,4,3,3,3,3,2,3,4,3,3,2,3,4,3,3,4,3,2,2,3,2,2,3,4,2,3,3,3,3,2,3,4,1,2,3,3,2,3,3,4,3,2,3,3,4,3,3,4,2,3,2,3,3,2,3,4,3,2,3,3,3,3,3,4,3,3,2,3,2,2,3,4,3,2,2,3,4,2,3,4,3,2,2,3,2,3,3,4,3,3,2,3,3,3,3,4,2,3,2,3,3,3,3,4,3,2,3,3,4,3,3,4,3,2,3,3,2,2,3,4,2,3,3,3,3,2,3,4,4,2,3,3,2,3,3,4,3,1,2,3,4,2,3,4,3,2,2,3,3,3,3,4,2,2,2,3,3,3,3,4,3,2,2,3,2,2,3,4,3,3,2,3,4,2,3,4,2,3,3,3,3,2,3,4,3,2,2,3,3,2,3,4,3,3,2,3,3,3,3,4,3,2,3,3,4,3,3,4,2,3,3,3,3,2,3,4,2,3,2,3,3,3,3,4,2,2,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,3,3,1,2,3,4,2,3,3,3,3,2,3,4,4,2,2,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,3,3,3,3,3,4,2,2,3,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,3,3,4,2,3,2,3,3,2,3,4,3,2,3,3,3,2,3,4,3,2,3,3,4,2,3,4,4,3,3,3,3,3,3,4,2,3,3,3,3,3,3,4,3,1,2,3,2,2,3,4,3,2,2,3,4,2,3,4,3,2,2,3,2,3,3,4,3,2,2,3,3,3,3,4,4,3,3,3,2,2,3,4,3,2,3,3,4,3,3,4,3,3,2,3,2,2,3,4,3,3,3,3,3,2,3,4,2,2,3,3,2,3,3,4,3,3,2,3,4,3,3,4,2,3,2,3,3,2,3,4,2,3,2,3,3,3,3,4,3,2,3,3,3,2,3,4,3,3,2,3,4,2,3,4,1,2,3,3,2,2,3,4,3,2,2,3,3,3,3,4,2,3,3,3,3,3,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,3,3,4,2,2,3,3,3,2,3,4,4,2,3,3,2,3,3,4,3,3,2,3,4,3,3,4,2,3,2,3,2,2,3,4,2,2,3,3,3,3,3,4,3,2,2,3,3,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,3,3,4,2,3,2,3,3,3,3,4,3,1,2,3,3,2,3,4,3,2,2,3,4,3,3,4,3,2,3,3,3,3,3,4,2,3,2,3,3,2,3,4,2,2,3,3,2,2,3,4,3,3,3,3,4,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,3,3,3,4,4,2,2,3,2,3,3,4,3,2,3,3,4,3,3,4,2,2,2,3,2,3,3,4,3,3,2,3,3,2,3,4,3,3,3,3,3,2,3,4,3,3,3,3,4,2,3,4,3,2,2,3,1,2,3,4,2,3,2,3,3,2,3,4,3,3,3,3,2,3,3,4,3,2,2,3,4,2,3,4,2,2,2,3,3,3,3,4,2,3,3,3,3,3,3,4,3,3,3,3,2,2,3,4,3,3,2,3,4,3,3,4,3,2,3,3,2,3,3,4,3,2,2,3,3,3,3,4,4,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,2,3,3,2,2,3,4,2,3,2,3,3,2,3,4,3,3,2,3,3,3,3,4,3,1,2,3,4,2,3,4,2,3,2,3,2,3,3,4,3,2,3,3,3,2,3,4,3,2,2,3,2,2,3,4,3,3,3,3,4,2,3,4,4,3,3,3,2,3,3,4,2,2,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,2,3,4,3,3,4,3,3,2,3,3,2,3,4,2,3,2,3,3,3,3,4,4,3,3,3,3,2,3,4,3,2,2,3,4,2,3,4,3,3,3,3,3,2,3,4,2,2,3,3,3,3,3,4,1,2,2,3,2,3,3,4,3,2,2,3,4,2,3,4,2,2,3,3,2,3,3,4,3,2,2,3,3,3,3,4,3,3,3,3,2,2,3,4,3,3,3,3,4,2,3,4,3,2,2,3,3,2,3,4,2,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,3,2,3,3,4,2,3,4,3,2,3,3,3,3,3,4,2,3,2,3,3,3,3,4,4,2,2,3,2,2,3,4,3,3,2,3,4,2,3,4,2,3,3,3,2,3,3,4,3,1,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,2,3,2,3,2,3,3,4,3,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,2,2,3,4,3,3,4,3,3,2,3,3,3,3,4,3,2,3,3,3,2,3,4,3,2,3,3,2,2,3,4,3,3,2,3,4,2,3,4,3,2,3,3,2,3,3,4,2,3,3,3,3,2,3,4,4,2,2,3,3,3,3,4,3,2,3,3,4,3,3,4,4,3,2,3,1,2,3,4,2,3,3,3,3,2,3,4,2,3,3,3,2,3,3,4,3,2,2,3,4,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,2,2,3,3,2,3,4,3,2,2,3,4,3,3,4,2,3,3,3,2,3,3,4,3,3,3,3,3,2,3,4,2,3,2,3,2,2,3,4,3,2,3,3,4,3,3,4,3,3,3,3,2,3,3,4,2,3,2,3,3,3,3,4,4,3,3,3,3,3,3,4,3,2,3,3,4,2,3,4,3,1,2,3,3,2,3,4,3,2,2,3,3,3,3,4,3,2,2,3,2,2,3,4,3,3,2,3,4,3,3,4,2,2,3,3,3,2,3,4,3,3,2,3,3,2,3,4,3,3,2,3,3,2,3,4,3,3,3,3,4,3,3,4,4,2,2,3,2,3,3,4,2,2,3,3,3,2,3,4,3,2,2,3,2,3,3,4,3,2,2,3,4,3,3,4,3,3,3,3,2,2,3,4,2,2,3,3,3,3,3,4,4,3,2,3,2,3,3,4,3,3,2,3,4,2,3,4,1,2,3,3,2,3,3,4,3,2,2,3,3,3,3,4,2,2,2,3,3,3,3,4,3,2,2,3,4,3,3,4,3,2,3,3,2,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,2,2,3,4,3,2,3,3,4,2,3,4,2,3,2,3,3,2,3,4,2,3,3,3,3,3,3,4,2,2,2,3,3,2,3,4,3,3,3,3,4,3,3,4,3,3,2,3,2,3,3,4,3,2,3,3,3,2,3,4,4,3,2,3,2,3,3,4,3,2,3,3,4,3,3,4,3,1,2,3,3,2,3,4,2,3,2,3,3,3,3,4,2,2,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,2,2,3,2,3,3,4,3,3,2,3,4,2,3,4,3,2,3,3,2,2,3,4,3,2,3,3,3,3,3,4,2,3,2,3,3,3,3,4,3,3,3,3,4,3,3,4,3,2,2,3,3,2,3,4,2,2,2,3,3,3,3,4,4,2,2,3,3,3,3,4,3,3,2,3,4,2,3,4,2,3,3,3,1,2,3,4,2,2,3,3,3,2,3,4,3,2,3,3,2,2,3,4,3,3,3,3,4,2,3,4,2,2,3,3,2,3,3,4,2,3,2,3,3,2,3,4,3,3,3,3,3,2,3,4,3,2,2,3,4,3,3,4,3,3,2,3,2,2,3,4,3,3,2,3,3,3,3,4,2,3,3,3,2,2,3,4,3,2,2,3,4,3,3,4,3,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,4,3,3,3,2,2,3,4,3,3,2,3,4,2,3,4,3,2,3,3,3,3,3,4,3,1,2,3,3,2,3,4,2,3,2,3,2,3,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,2,3,4,2,3,3,3,3,2,3,4,3,3,3,3,3,3,3,4,3,2,2,3,4,3,3,4,4,2,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,2,2,3,3,3,3,4,3,3,2,3,4,2,3,4,3,3,3,3,2,2,3,4,3,3,2,3,3,2,3,4,4,3,2,3,3,2,3,4,3,3,3,3,4,3,3,4,2,3,2,3,2,3,3,4,2,3,2,3,3,2,3,4,1,2,2,3,2,3,3,4,3,2,3,3,4,2,3,4,2,3,3,3,3,2,3,4,3,2,3,3,3,3,3,4,3,2,2,3,2,3,3,4,3,3,2,3,4,3,3,4,2,2,3,3,3,3,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,2,3,4,3,3,2,3,4,3,3,4,3,2,2,3,3,2,3,4,3,3,2,3,3,2,3,4,4,2,3,3,2,3,3,4,3,2,3,3,4,2,3,4,2,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,3,2,2,3,2,3,3,4,3,1,2,3,4,2,3,4,2,3,2,3,2,3,3,4,3,2,2,3,3,3,3,4,3,3,2,3,3,2,3,4,3,2,3,3,4,2,3,4,3,2,2,3,2,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,2,3,3,4,3,3,4,3,3,2,3,3,3,3,4,2,3,2,3,3,3,3,4,4,2,2,3,2,3,3,4,3,3,3,3,4,2,3,4,3,3,3,3,2,2,3,4,3,3,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,2,3,3,3,1,2,3,4,2,2,3,3,3,2,3,4,3,2,3,3,2,3,3,4,3,3,3,3,4,2,3,4,3,3,2,3,2,2,3,4,2,2,3,3,3,2,3,4,3,3,2,3,2,2,3,4,3,3,2,3,4,2,3,4,3,2,3,3,2,3,3,4,3,2,3,3,3,2,3,4,4,3,3,3,3,2,3,4,3,2,2,3,4,3,3,4,3,2,3,3,2,3,3,4,2,3,2,3,3,3,3,4,2,2,3,3,3,2,3,4,3,2,2,3,4,2,3,4,2,3,3,3,3,3,3,4,2,3,3,3,3,3,3,4,3,1,2,3,2,2,3,4,3,3,2,3,4,3,3,4,4,2,2,3,3,3,3,4,3,2,2,3,3,2,3,4,2,3,3,3,3,2,3,4,3,2,3,3,4,2,3,4,3,3,2,3,3,3,3,4,2,3,2,3,3,2,3,4,4,2,3,3,2,3,3,4,3,2,2,3,4,3,3,4,2,2,2,3,3,2,3,4,2,3,3,3,3,3,3,4,3,3,3,3,2,2,3,4,3,3,3,3,4,3,3,4,3,2,3,3,2,3,3,4,3,2,2,3,3,2,3,4,3,3,3,3,3,3,3,4,3,3,3,3,4,3,3,4,1,2,2,3,2,2,3,4,3,2,2,3,3,2,3,4,2,3,2,3,2,3,3,4,3,2,2,3,4,2,3,4,3,3,2,3,2,3,3,4,2,3,3,3,3,3,3,4,4,2,2,3,3,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,3,3,4,2,3,3,3,3,2,3,4,3,2,2,3,3,3,3,4,3,2,2,3,4,3,3,4,3,2,3,3,2,3,3,4,2,3,2,3,3,3,3,4,3,2,3,3,2,3,3,4,3,2,3,3,4,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,3,3,3,4,2,1,2,3,3,2,3,4,3,2,2,3,4,2,3,4,3,2,3,3,3,3,3,4,3,2,2,3,3,3,3,4,4,3,3,3,2,2,3,4,3,3,3,3,4,3,3,4,3,3,2,3,2,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,3,2,3,4,3,3,4,2,2,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,3,2,3,3,2,3,4,3,3,3,3,4,2,3,4,2,2,3,3,2,2,3,4,3,2,2,3,3,3,3,4,3,3,2,3,3,3,3,4,3,2,3,3,4,3,3,4,3,2,3,3,1,2,3,4,2,3,2,3,3,2,3,4,4,3,2,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,2,3,2,3,3,4,2,2,3,3,3,2,3,4,3,2,3,3,2,2,3,4,3,3,3,3,4,3,3,4,2,2,3,3,2,3,3,4,3,2,3,3,3,3,3,4,3,2,2,3,3,2,3,4,3,3,3,3,4,3,3,4,4,2,2,3,3,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,3,2,3,4,2,3,4,3,3,2,3,3,3,3,4,2,3,3,3,3,3,3,4,4,2,2,3,2,3,3,4,3,1,2,3,4,2,3,4,3,3,2,3,2,3,3,4,3,2,3,3,3,2,3,4,2,3,2,3,2,2,3,4,3,2,3,3,4,2,3,4,3,3,2,3,2,2,3,4,2,3,2,3,3,3,3,4,3,3,3,3,2,3,3,4,3,2,2,3,4,2,3,4,2,3,3,3,3,2,3,4,3,3,2,3,3,3,3,4,3,2,2,3,2,2,3,4,3,3,2,3,4,2,3,4,3,2,3,3,2,2,3,4,3,2,3,3,3,2,3,4,4,3,2,3,3,2,3,4,3,3,3,3,4,3,3,4,2,3,3,3,3,2,3,4,3,2,2,3,3,3,3,4,1,2,3,3,2,3,3,4,3,2,3,3,4,3,3,4,2,3,2,3,3,3,3,4,2,2,3,3,3,3,3,4,3,2,3,3,2,2,3,4,3,3,2,3,4,2,3,4,3,2,3,3,3,3,3,4,2,3,2,3,3,2,3,4,2,3,3,3,3,3,3,4,3,2,2,3,4,3,3,4,3,2,2,3,2,2,3,4,2,3,3,3,3,2,3,4,4,3,3,3,2,2,3,4,3,2,2,3,4,3,3,4,4,3,3,3,3,3,3,4,3,2,3,3,3,3,3,4,2,2,2,3,3,3,3,4,3,2,2,3,4,2,3,4,2,3,3,3,2,3,3,4,3,1,2,3,3,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,4,2,3,4,3,2,2,3,2,3,3,4,2,3,3,3,3,2,3,4,2,3,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,2,3,3,2,3,4,3,2,2,3,3,3,3,4,4,2,2,3,3,2,3,4,3,3,2,3,4,3,3,4,3,3,3,3,3,3,3,4,3,2,3,3,3,2,3,4,2,3,3,3,3,2,3,4,3,3,3,3,4,3,3,4,3,3,2,3,2,2,3,4,2,2,2,3,3,3,3,4,3,2,2,3,2,3,3,4,3,2,2,3,4,3,3,4,4,3,2,3,1,2,3,4,2,2,3,3,3,2,3,4,3,3,2,3,2,2,3,4,3,3,3,3,4,2,3,4,3,2,3,3,3,3,3,4,2,2,2,3,3,2,3,4,4,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,2,3,3,2,3,3,4,2,3,2,3,3,3,3,4,3,2,3,3,3,2,3,4,3,3,2,3,4,2,3,4,2,3,2,3,3,3,3,4,2,2,3,3,3,3,3,4,3,3,3,3,2,2,3,4,3,2,3,3,4,2,3,4,2,3,3,3,2,3,3,4,3,2,2,3,3,2,3,4,2,3,3,3,2,2,3,4,3,3,3,3,4,3,3,4,3,1,2,3,3,2,3,4,3,3,2,3,3,2,3,4,4,2,3,3,2,3,3,4,3,3,2,3,4,2,3,4,2,2,2,3,3,2,3,4,2,3,2,3,3,3,3,4,3,3,2,3,2,3,3,4,3,3,3,3,4,2,3,4,2,2,3,3,3,2,3,4,3,3,3,3,3,2,3,4,3,3,2,3,3,3,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,2,3,4,2,3,3,3,3,3,3,4,2,2,2,3,3,3,3,4,3,2,2,3,4,3,3,4,3,3,2,3,3,2,3,4,2,3,3,3,3,2,3,4,4,2,3,3,2,2,3,4,3,3,3,3,4,2,3,4,1,2,3,3,2,3,3,4,2,2,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,3,2,3,2,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,3,2,3,4,3,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,2,2,3,3,2,2,3,4,3,3,3,3,4,3,3,4,3,2,2,3,2,3,3,4,3,2,2,3,3,3,3,4,4,3,2,3,2,3,3,4,3,2,3,3,4,2,3,4,3,2,2,3,3,3,3,4,3,3,3,3,3,3,3,4,2,3,3,3,2,3,3,4,3,2,2,3,4,3,3,4,2,1,2,3,3,2,3,4,2,2,2,3,3,3,3,4,3,2,3,3,3,2,3,4,3,3,2,3,4,3,3,4,4,3,3,3,2,2,3,4,3,3,2,3,3,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,3,3,4,2,3,3,3,3,2,3,4,4,2,2,3,3,3,3,4,3,2,3,3,4,2,3,4,2,3,2,3,2,2,3,4,2,3,3,3,3,3,3,4,3,2,3,3,2,3,3,4,3,3,2,3,4,3,3,4,3,2,3,3,3,3,3,4,3,2,2,3,3,2,3,4,3,2,3,3,3,2,3,4,3,2,2,3,4,3,3,4,3,3,2,3,1,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,3,3,3,2,3,4,2,2,3,3,3,3,3,4,4,3,2,3,2,2,3,4,3,3,2,3,4,2,3,4,2,3,2,3,2,3,3,4,3,2,3,3,3,3,3,4,2,3,3,3,3,2,3,4,3,3,3,3,4,2,3,4,3,2,3,3,3,3,3,4,2,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,2,3,3,4,2,3,4,3,2,2,3,3,3,3,4,2,2,3,3,3,3,3,4,3,2,2,3,2,2,3,4,3,3,3,3,4,2,3,4,3,3,3,3,2,2,3,4,3,1,2,3,3,2,3,4,4,3,2,3,3,3,3,4,3,2,3,3,4,3,3,4,3,3,2,3,3,2,3,4,2,2,2,3,3,2,3,4,2,2,3,3,2,3,3,4,3,3,2,3,4,3,3,4,3,3,3,3,2,2,3,4,3,2,3,3,3,2,3,4,3,2,2,3,2,3,3,4,3,3,2,3,4,3,3,4,2,2,3,3,2,3,3,4,2,3,3,3,3,2,3,4,3,3,2,3,3,2,3,4,3,2,2,3,4,3,3,4,3,3,2,3,2,2,3,4,2,3,2,3,3,3,3,4,4,2,3,3,3,3,3,4,3,2,2,3,4,3,3,4,3,3,3,3,3,2,3,4,2,3,3,3,3,3,3,4,1,2,2,3,2,3,3,4,3,2,2,3,4,2,3,4,2,3,3,3,2,3,3,4,3,2,2,3,3,2,3,4,3,3,2,3,2,2,3,4,3,3,3,3,4,3,3,4,4,2,3,3,2,2,3,4,3,3,2,3,3,3,3,4,2,2,3,3,2,3,3,4,3,2,3,3,4,3,3,4,3,2,3,3,3,2,3,4,3,2,2,3,3,3,3,4,4,3,2,3,2,2,3,4,3,3,2,3,4,2,3,4,4,3,3,3,3,2,3,4,3,2,2,3,3,3,3,4,2,3,2,3,3,3,3,4,3,2,3,3,4,3,3,4,2,3,2,3,2,3,3,4,2,2,3,3,3,2,3,4,3,3,2,3,2,3,3,4,3,1,2,3,4,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,3,2,3,2,2,3,4,3,3,3,3,4,2,3,4,3,2,3,3,3,3,3,4,2,3,2,3,3,3,3,4,4,2,3,3,3,3,3,4,3,2,2,3,4,3,3,4,3,2,2,3,2,2,3,4,3,3,2,3,3,2,3,4,2,3,3,3,3,3,3,4,3,2,3,3,4,2,3,4,2,3,2,3,3,2,3,4,3,3,3,3,3,3,3,4,3,2,2,3,3,2,3,4,3,3,2,3,4,3,3,4,3,2,2,3,3,3,3,4,3,2,3,3,3,2,3,4,2,3,3,3,2,2,3,4,3,3,3,3,4,2,3,4,3,2,2,3,1,2,3,4,2,3,2,3,3,2,3,4,4,3,3,3,2,3,3,4,3,2,2,3,4,2,3,4,2,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,3,3,2,3,2,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,2,3,4,3,2,2,3,3,3,3,4,3,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,2,2,3,3,2,3,3,4,2,2,3,3,3,2,3,4,3,3,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,2,3,3,3,3,4,2,2,3,3,3,3,3,4,4,2,2,3,2,2,3,4,3,3,3,3,4,2,3,4,3,3,3,3,2,3,3,4,3,2,3,3,3,2,3,4,3,1,2,3,3,2,3,4,3,2,2,3,4,3,3,4,3,2,2,3,3,2,3,4,2,3,2,3,3,3,3,4,3,3,3,3,2,2,3,4,3,3,2,3,4,3,3,4,4,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,2,2,3,3,3,3,3,4,3,3,2,3,4,3,3,4,3,2,2,3,2,3,3,4,3,3,3,3,3,3,3,4,4,3,2,3,3,2,3,4,3,2,3,3,4,2,3,4,3,2,3,3,2,2,3,4,2,3,2,3,3,2,3,4,2,3,3,3,3,3,3,4,3,3,2,3,4,2,3,4,2,2,3,3,3,2,3,4,2,3,3,3,3,3,3,4,3,3,2,3,2,3,3,4,3,3,2,3,4,2,3,4,1,2,3,3,2,3,3,4,3,2,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,4,3,3,4,3,3,2,3,2,3,3,4,3,2,2,3,3,2,3,4,4,2,2,3,2,3,3,4,3,2,3,3,4,3,3,4,2,3,3,3,3,2,3,4,2,2,3,3,3,3,3,4,3,2,3,3,3,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,3,3,4,2,3,2,3,3,2,3,4,3,2,2,3,3,3,3,4,3,2,3,3,4,3,3,4,3,2,3,3,3,2,3,4,2,3,3,3,3,3,3,4,2,3,3,3,2,2,3,4,3,2,3,3,4,2,3,4,3,3,3,3,3,3,3,4,3,2,3,3,3,3,3,4,4,1,2,3,3,2,3,4,3,2,2,3,4,2,3,4,4,2,2,3,2,3,3,4,3,3,2,3,3,2,3,4,3,3,2,3,2,2,3,4,3,3,3,3,4,3,3,4,3,2,2,3,2,3,3,4,2,3,2,3,3,3,3,4,3,2,3,3,2,3,3,4,3,2,3,3,4,3,3,4,2,3,2,3,3,2,3,4,3,2,2,3,3,3,3,4,3,2,3,3,2,2,3,4,3,3,2,3,4,3,3,4,3,2,3,3,2,3,3,4,3,3,2,3,3,2,3,4,4,3,3,3,3,2,3,4,3,3,3,3,4,3,3,4,3,2,2,3,2,2,3,4,2,3,3,3,3,2,3,4,2,2,2,3,3,3,3,4,3,2,2,3,4,2,3,4,3,3,2,3,1,2,3,4,2,2,3,3,3,2,3,4,3,3,2,3,2,2,3,4,3,3,3,3,4,2,3,4,4,3,3,3,3,3,3,4,2,3,2,3,3,3,3,4,2,2,2,3,3,2,3,4,3,3,3,3,4,3,3,4,3,2,3,3,2,3,3,4,2,3,3,3,3,3,3,4,4,2,3,3,2,2,3,4,3,2,2,3,4,3,3,4,2,3,2,3,3,3,3,4,2,3,3,3,3,3,3,4,3,2,2,3,2,3,3,4,3,3,3,3,4,2,3,4,2,3,2,3,2,3,3,4,3,2,3,3,3,2,3,4,3,3,2,3,2,2,3,4,3,2,3,3,4,3,3,4,3,3,2,3,3,3,3,4,2,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,1,2,3,4,2,3,4,3,3,2,3,3,2,3,4,2,2,2,3,3,3,3,4,4,3,2,3,3,3,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,2,3,4,3,2,2,3,3,2,3,4,2,3,3,3,3,3,3,4,3,2,3,3,4,3,3,4,2,2,2,3,2,2,3,4,3,2,2,3,3,3,3,4,3,2,3,3,3,3,3,4,3,2,3,3,4,2,3,4,3,3,3,3,2,2,3,4,2,3,3,3,3,3,3,4,3,3,2,3,3,2,3,4,3,3,2,3,4,3,3,4,3,3,3,3,2,3,3,4,2,2,3,3,3,2,3,4,4,2,2,3,3,3,3,4,3,3,3,3,4,3,3,4,3,3,2,3,2,3,3,4,3,3,2,3,3,2,3,4,1,2,3,3,2,2,3,4,3,2,3,3,4,2,3,4,2,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,2,3,3,2,2,3,4,3,3,2,3,4,3,3,4,3,2,3,3,2,3,3,4,3,2,2,3,3,3,3,4,2,3,2,3,3,3,3,4,3,2,3,3,4,2,3,4,3,2,2,3,2,3,3,4,2,3,3,3,3,3,3,4,4,3,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,2,2,3,3,2,3,4,2,2,2,3,3,3,3,4,3,2,2,3,3,2,3,4,3,3,3,3,4,2,3,4,2,2,3,3,2,3,3,4,3,3,3,3,3,2,3,4,3,3,3,3,3,2,3,4,3,2,3,3,4,3,3,4,4,2,2,3,2,3,3,4,3,1,2,3,3,2,3,4,2,3,2,3,2,3,3,4,3,2,3,3,4,2,3,4,3,3,2,3,2,2,3,4,3,2,3,3,3,2,3,4,4,2,3,3,2,2,3,4,3,3,2,3,4,3,3,4,2,2,3,3,3,3,3,4,2,2,2,3,3,3,3,4,2,3,2,3,3,2,3,4,3,3,2,3,4,3,3,4,3,2,2,3,3,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,3,3,3,4,3,2,2,3,4,2,3,4,2,3,2,3,3,3,3,4,2,3,3,3,3,3,3,4,2,3,3,3,2,3,3,4,3,2,2,3,4,3,3,4,3,2,3,3,3,3,3,4,3,3,2,3,3,3,3,4,4,3,2,3,2,2,3,4,3,2,3,3,4,2,3,4,3,2,3,3,1,2,3,4,2,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,2,3,3,4,2,3,4,2,2,3,3,3,2,3,4,2,3,2,3,3,3,3,4,3,3,2,3,2,2,3,4,3,3,3,3,4,2,3,4,3,3,3,3,2,3,3,4,3,2,2,3,3,3,3,4,2,3,2,3,3,2,3,4,3,3,3,3,4,3,3,4,3,2,3,3,3,2,3,4,2,3,2,3,3,2,3,4,4,2,3,3,2,3,3,4,3,3,2,3,4,2,3,4,3,3,2,3,3,3,3,4,3,2,3,3,3,2,3,4,3,3,2,3,2,3,3,4,3,3,2,3,4,2,3,4,2,2,3,3,2,3,3,4,2,2,3,3,3,2,3,4,3,3,2,3,3,2,3,4,3,3,3,3,4,3,3,4,3,1,2,3,2,2,3,4,2,3,2,3,3,3,3,4,2,2,3,3,3,3,3,4,3,2,2,3,4,3,3,4,3,3,3,3,3,2,3,4,3,2,3,3,3,3,3,4,4,3,2,3,2,2,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,3,3,4,3,3,2,3,3,3,3,4,2,3,2,3,3,2,3,4,3,2,3,3,4,2,3,4,3,3,2,3,2,2,3,4,3,3,3,3,3,2,3,4,3,2,3,3,2,3,3,4,3,3,2,3,4,3,3,4,4,2,3,3,3,2,3,4,2,2,2,3,3,3,3,4,3,2,3,3,2,2,3,4,3,3,2,3,4,2,3,4,3,3,3,3,2,2,3,4,3,2,2,3,3,2,3,4,4,3,3,3,3,3,3,4,3,2,3,3,4,3,3,4,1,2,3,3,2,2,3,4,2,2,3,3,3,3,3,4,2,3,3,3,2,3,3,4,3,2,2,3,4,2,3,4,2,3,2,3,2,3,3,4,2,2,3,3,3,3,3,4,3,2,2,3,3,3,3,4,3,3,2,3,4,2,3,4,2,2,3,3,3,3,3,4,3,3,2,3,3,2,3,4,3,2,2,3,3,3,3,4,3,2,3,3,4,3,3,4,3,3,2,3,2,3,3,4,2,3,3,3,3,2,3,4,4,3,3,3,2,2,3,4,3,2,3,3,4,2,3,4,2,3,2,3,3,2,3,4,3,3,3,3,3,3,3,4,2,3,3,3,2,2,3,4,3,3,2,3,4,3,3,4,2,2,2,3,3,3,3,4,3,2,2,3,3,2,3,4,3,3,3,3,2,2,3,4,3,3,3,3,4,3,3,4,3,1,2,3,2,2,3,4,3,3,2,3,3,2,3,4,3,2,3,3,2,3,3,4,3,2,2,3,4,2,3,4,3,2,2,3,3,2,3,4,2,3,3,3,3,3,3,4,4,2,2,3,3,2,3,4,3,3,2,3,4,2,3,4,2,2,3,3,3,2,3,4,3,3,3,3,3,3,3,4,2,3,2,3,3,3,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,2,3,4,2,3,3,3,3,3,3,4,3,2,2,3,2,3,3,4,3,2,2,3,4,2,3,4,2,3,3,3,2,3,3,4,2,3,3,3,3,2,3,4,3,2,2,3,2,3,3,4,3,3,3,3,4,2,3,4,3,3,3,3,2,3,3,4,3,2,2,3,3,3,3,4,4,3,2,3,3,3,3,4,3,2,2,3,4,3,3,4,3,2,2,3,1,2,3,4,2,3,2,3,3,2,3,4,2,3,3,3,2,2,3,4,3,3,2,3,4,2,3,4,3,3,2,3,3,3,3,4,2,3,3,3,3,3,3,4,3,2,2,3,3,2,3,4,3,2,3,3,4,2,3,4,4,2,3,3,2,3,3,4,3,2,3,3,3,2,3,4,2,3,3,3,2,2,3,4,3,2,3,3,4,3,3,4,3,2,2,3,2,2,3,4,2,3,3,3,3,3,3,4,4,3,3,3,3,3,3,4,3,2,2,3,4,2,3,4,3,3,3,3,3,2,3,4,2,3,2,3,3,3,3,4,3,2,3,3,2,2,3,4,3,3,2,3,4,3,3,4,2,3,3,3,2,3,3,4,3,2,2,3,3,2,3,4,3,3,2,3,3,2,3,4,3,3,3,3,4,3,3,4,2,3,3,3,3,2,3,4,2,1,2,3,3,2,3,4,2,2,2,3,3,3,3,4,3,2,2,3,4,3,3,4,3,3,2,3,3,2,3,4,2,2,3,3,3,2,3,4,4,2,3,3,3,3,3,4,3,3,2,3,4,3,3,4,3,2,3,3,2,3,3,4,2,2,2,3,3,3,3,4,2,2,2,3,3,3,3,4,3,2,2,3,4,3,3,4,3,3,3,3,2,2,3,4,2,3,2,3,3,2,3,4,3,3,3,3,2,3,3,4,3,3,2,3,4,3,3,4,3,3,2,3,3,2,3,4,2,2,3,3,3,3,3,4,3,3,2,3,3,2,3,4,3,2,2,3,4,2,3,4,3,2,3,3,3,3,3,4,3,3,2,3,3,2,3,4,4,3,2,3,2,2,3,4,3,3,3,3,4,2,3,4,4,2,2,3,3,3,3,4,2,3,3,3,3,2,3,4,1};
        return dp[n];
    }
};


作者:力扣官方题解
链接:https://leetcode.cn/problems/perfect-squares/solutions/822940/wan-quan-ping-fang-shu-by-leetcode-solut-t99c/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(游戏,算法,java,数据结构,leetcode,kafka,spring,boot)