【从0到1冲刺蓝桥杯国赛】每日一练——完全平方数
完全平方数https://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; }};