*#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 5e6 + 10;
int n;
struct sum{
int s,c,d;
bool operator < (const sum &T)const{ // 重载小于符号
if(s != T.s) return s < T.s;
if(c != T.c) return c < T.c;
else return d < T.d;
}
}sum[N];
int main(){
cin >> n;
int m = 0;
for(int c = 0;c * c < n; c++){
for(int d = c;c * c + d * d <= n;d++){
int s = c * c + d * d;
sum[m++] = {s,c,d};
}
}
sort(sum,sum + m);
for(int a = 0;a * a < n; a++){
for(int b = 0;a * a + b * b < n ;b++){
int t = n - a * a - b * b;
int l = 0,r = m-1;
while(l < r){
int mid = l + r >> 1;
if(sum[mid].s >= t) r = mid;
else l = mid + 1;
}
if(sum[r].s == t){
cout << a <<" " << b <<" " << sum[r].c <<" " << sum[r].d <<" " << endl;
return 0;
}
}
}
return 0;
}
ACwing :1221 四平方和 (二分)
最新推荐文章于 2025-05-15 20:06:03 发布