测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题