A20183. 四方定理
填空题
较难
知识点
题目描述
四方定理
题目描述
给定一个自然数 n,请输出 n 的所有四平方拆分方案。
输入
单个整数:表示 n。
输出
若干行:每行四个由小到大排列的自然数,表示一种拆分方案。
如果有多种方案,先输出首项较小的方案,首项相同则第二项较小优先,以此类推。
数据范围
0≤n≤50000。
输入样例1
25输出样例1
0 0 0 5
0 0 3 4
1 2 2 4参考答案
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
for(int a=0; a*a<=n; a++) { //使用三重循环避免超时
for(int b=a; a*a+b*b<=n; b++) {
for(int c=b; a*a+b*b+c*c<=n; c++) {
int left=n-a*a-b*b-c*c; //剩余数
int d=sqrt(left);
if(d*d==left && d>=c) //判断d是整数即可
cout << a << " " << b << " " << c << " " << d << endl;
}
}
}
return 0;
}
上一题
下一题