bool is_sqrt(long long n) {
int m = sqrt(n);
if (m*m == n)
return true;
else
return false;
}
int solve(long long n) {
if (is_sqrt(n))
return 1;
while (n % 4 == 0)
n /= 4;
if (n % 8 == 7)
return 4;
for (int i = 0; i*i < n; i++) {
if (is_sqrt(n - i*i))
return 2;
}
return 3;
}
求一个数最少能表示成几个数的平方和(比如5=1+4,返回2)
最新推荐文章于 2021-09-09 09:28:57 发布