> 文档中心 > 【从0到1冲刺蓝桥杯国赛】每日一练——完全平方数

【从0到1冲刺蓝桥杯国赛】每日一练——完全平方数

完全平方数icon-default.png?t=M276https://leetcode-cn.com/problems/perfect-squares/

题目描述: 

 

 思路分析:四平方和定理

 

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;    }};