题目描述
- 思路,通过枚举判断是否相等,三个数需要三层for循环,可以加上限制条件,以减少循环次数。
- 由于是字典序最小,那么abcd一定能够是升序的
字典序降序为字典序最小的答案
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int n,d;
cin>>n;
for(int a=0;a*a<n;a++)
{
for(int b=a;b*b+a*a<n;b++)
{
for(int c=b;a*a+b*b+c*c<n;c++)
{
d=sqrt(n-a*a-b*b-c*c);
if(a*a+b*b+c*c+d*d==n)
{
cout<<a<<" "<<b<<" "<<c<<" "<<d;
return 0;
}
}
}
}
return 0;
}