网站版式布局,搜外网 seo教程,包装策划与设计专业,设计兼职网站有哪些题目描述 四平方和定理#xff0c;又称为拉格朗日定理#xff1a;每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去#xff0c;就正好可以表示为4个数的平方和。 比如#xff1a; 5 0^2 0^2 1^2 2^2 7 1^2 1^2 1^2 2^ 2#xff08;^符号表示乘方的…题目描述 四平方和定理又称为拉格朗日定理每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去就正好可以表示为4个数的平方和。 比如 5 0^2 0^2 1^2 2^2 7 1^2 1^2 1^2 2^ 2^符号表示乘方的意思 对于一个给定的正整数N可能存在多种平方和的表示法。 要求你对4个数排序0 a b c d 并对所有的可能表示法按 a,b,c,d 为联合主键升序排列最后输出第一个表示法 输入 输入存在多组测试数据每组测试数据输入一行为一个正整数N (N5000000) 输出 对于每组测试数据要求输出4个非负整数按从小到大排序中间用空格分开 样例输入 Copy 5 12 773535 样例输出 Copy 0 0 1 2 0 2 2 2 1 1 267 838
注意点 这题在调用sqrt()函数时要进行强制转换因为题目要求的四个数都是正整数如果不进行强制转换返回的数可能是小数就不符合要求了如果你不知道为什么返回的是小数请点这里 sqrt()函数的注意事项
代码如下
#include iostream
#include cmath
using namespace std;
bool flag;
int s;int main() {while (cin s) {flag false;for (int a 0; a * a s; a) {for (int b a; b * b a * a s; b) {for (int c b; c * c b * b a * a s; c) {if (pow((int)sqrt(s - a * a - b * b - c * c), 2) s - a * a - b * b - c * c) {cout a b c (int)sqrt(s - a * a - b * b - c * c) endl;flag true;}if (flag)break;}if (flag)break;}if (flag)break;}}return 0;
}#include iostream
#include cmath
using namespace std;int main()
{int n;while(cinn){bool flag false;for (int a 0;a*an;a){for (int b a;a*ab*bn;b){for (int c b;c*cb*ba*an;c){double d sqrt(n-a*a-b*b-c*c);if (dint(d))//如果第4个数是整数说明符合题意{couta b c dendl;flag true;}if (flag) break;}if (flag) break;}if (flag) break;}}return 0;
}