題目:給定一個數字,判斷能否拆成三個平方數的和。
分析:數論,枚舉。直接枚舉其中的兩個數字,然後判斷剩下的數字是不是平方數即可。
說明:判斷是不是平方數可以直接利用開方函數,結果賦值給整數和浮點,判斷相同否。
#include <cstring>
#include <cstdio>
#include <cmath>
int main()
{
int n, k, p, i, j;
double v;
while (~scanf("%d",&n))
while (n --) {
scanf("%d",&k);
int flag = 0;
for (i = 0; i*i <= k; ++ i) {
for (j = i; j*j <= k-i*i; ++ j) {
v = sqrt(0.0+k-i*i-j*j);
p = sqrt(0.0+k-i*i-j*j);
if (p == v) {
flag = 1;break;
}
}
if (flag) break;
}
if (flag)
printf("%d %d %d\n",i,j,p);
else printf("%d\n",-1);
}
return 0;
}