第七届蓝桥杯 四平方和
2018-06-17 21:19:42来源:未知 阅读 ()
转载请注明出处:http://www.cnblogs.com/zhishoumuguinian/p/8372337.html
四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 (^符号表示乘方的意思)对于一个给定的正整数,可存在多种平方和的表示法。要求你对4个数排序:0 <= a <= b <= c <= d。并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法。程序输入为一个正整数N (N<5000000),要求输出4个非负整数,按从小到大排序,中间用空格分开
例如,输入:
5
则程序应该输出:
0 0 1 2
再例如,输入:
12
则程序应该输出:
0 2 2 2
再例如,输入:
773535
则程序应该输出:
1 1 267 838
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 3000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
思路:四个数的平放,第一想法是四层循环,但是最后一层循可以省略。每层循环到sqrt(5000000)+1即可,可以先输出一下,sqrt(5000000)+1值为2237。大题思路就是这样,接下来粘上代码。
1 #include <iostream>
2 #include <cmath>
3 using namespace std;
4
5
6 int main()
7 {
8 int n;
9 cin>>n;
10 //n=5000000;
11 for(int a=0; a<=2237; a++)
12 {
13 for(int b=0; b<=2237; b++)
14 {
15 for(int c=0; c<=2237; c++)
16 {
17 int dj=n-a*a-b*b-c*c;
18 int d=sqrt(dj);
19 if(dj==d*d)//如果dj等于d的平方,第四位数是一个整数的平方,这个整数d就是第四位数
20 {
21 cout<<a<<" "<<b<<" "<<c<<" "<<d;
22 return 0;
23 }
24 }
25 }
26 }
27 }
题目限制时间是3秒
计算的5000000,DEV-C++执行时间 CODEBLOCKS执行时间
如果本文对你有帮助,请给个??,谢谢。。。。。。。。。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:hdu 1078
- [题记-并查集] 合根植物 - 蓝桥杯 2020-04-07
- 蓝桥杯练习(入门一) 2020-03-23
- 【蓝桥杯】十六进制转八进制 2020-02-17
- 全球变暖(18年4月蓝桥杯) 2019-12-28
- 算法训练 区间k大数查询 2019-02-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash