#include <bits/stdc++.h>
using namespace std;
typedef pair<int ,int> PII;
const int N = 2500010;
int n,m;
unordered_map<int,PII> S;//哈希表
int main(){
scanf("%d",&n);
for(int c = 0;c*c<=n;c++)
for(int d = c;c*c+d*d<=n;d++){
int t = c*c+d*d;
if(S.count(t) == 0)S[t] = {c,d};//保证d会比c大
}
for(int a = 0;a*a<=n;a++)
for(int b = 0;b*b+a*a<=n;b++){
int t = n - a * a -b *b;
if(S.count(t)){//如果两次计算的t值相等,说明其实是满足同一组解
printf("%d %d %d %d",a,b,S[t].first,S[t].second);
return 0;//在这return防止将多组解全部输出出来
}
}
}
记录一下第一次用哈希表,虽然超时了这个题