本题正解为 。
如果你用 就会凉凉。
这道题可以直接暴力枚举前三个数,最后只要判断剩余一个数是不是整数即可。
前三个数要满足从小到大的顺序,且我们要枚举到这个数的平方小于
即可(如果整个数的平方大于
,则结束这层循环)。
如何判断第四个数是整数呢?只要判断 是否为整数即可。
标程在这里:
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin >> n;
for(int i = 0;i*i <= n;i++)
{
for(int j = i;j*j <= n;j++)
{
for(int k = j;k*k <= n;k++)
{
if(double(sqrt(n-pow(i,2)-pow(j,2)-pow(k,2))) == int(sqrt(n-pow(i,2)-pow(j,2)-pow(k,2))))
{
cout << i << " " << j << " " << k << " " <<sqrt(n-pow(i,2)-pow(j,2)-pow(k,2));
return 0;
}
}
}
}
return 0;
}