只需要枚举a, b, c就足够了,d是可以通过a, b, c算出来的,少一层循环降低运行时间
#include <iostream>
#include <cmath>
using namespace std;
void spfh(int n)
{
for (int i = 0; i <= sqrt(n); i++)
{
for (int j = i; j <= sqrt(n); j++)
{
for (int k = j; k <= sqrt(n); k++)
{
int l = sqrt(n-i*i-j*j-k*k);
if (n == i*i+j*j+k*k+l*l)
{
if (k > l)
{
int temp = l;
l = k;
k = temp;
}
cout << i << " " << j << " " << k << " " << l << endl;
return ;
}
}
}
}
}
int main()
{
int n;
cin >> n;
spfh(n);
return 0;
}