对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对 44个数排序使得 0≤a≤b≤c≤d。
输入 #1复制
5
输出 #1
0 0 1 2
输入 #2
12
输出 #2
0 2 2 2
输入 #3
773535
输出 #3
1 1 267 838
代码
#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-i*i;j++)
for(int k=j;k*k<=n-i*i-j*j;k++){
int p=n-i*i-j*j-k*k;
int r=int(sqrt(p)); //保证是正数
if(r<k)break;
if(p==r*r){
int a[4]={i,j,k,r};
for(int s=0;s<4;s++)
printf("%d ",a[s]);
return 0;
}
}
return 0;
}