蓝桥杯-四平方和-python

简介: 蓝桥杯-四平方和-python

题目描述


四平方和定理,又称为拉格朗日定理:

每个正整数都可以表示为至多 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<5×10^6)。


输出描述


要求输出 4 个非负整数,按从小到大排序,中间用空格分开


输入输出样例


示例

输入

12

输出

0 2 2 2

思路:


暴力寻找每一个数,做适当的剪枝处理


代码:


1. import math
2. n=int(input())
3. #确定边界,题目要求的数一定小于给定的数的开方
4. x=int((math.sqrt(n)))
5. 
6. #创建一个平方列表,减少寻找第四个数的时间
7. pf = [i ** 2 for i in range(0, x)]
8. 
9. def f(x):
10.     #暴力搜索每一个数,进行可行性剪枝
11. for a in range(x+1):
12.         flag=0
13. if a*a>n:
14.             flag=1
15. for b in range(a,x+1):
16. if flag:
17.                 break
18. if a*a+b*b>n:
19.                 flag=1
20. for c in range(b,x+1):
21.                 z=n-a*a-b*b-c*c
22. if z<0:
23.                     flag=1
24.                     break
25. else:
26. if z in list:
27.                         ans=sorted([a,b,c,int(math.sqrt(z))])                                
28. return ans[0],ans[1],ans[2],ans[3]
29. a, b, c, d = f(x)
30. print(f"{a} {b} {c} {d}")
目录
相关文章
|
25天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-475 连续平方和
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-475 连续平方和
26 0
|
7月前
|
存储 索引 Python
蓝桥杯系列2——python基本语法
蓝桥杯系列2——python基本语法
70 0
|
25天前
|
索引 Python 容器
【备战蓝桥杯】探索Python内置标准库collections的使用
【备战蓝桥杯】探索Python内置标准库collections的使用
58 1
|
25天前
|
开发者 Python
【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数
【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数
42 1
|
25天前
|
算法 测试技术 编译器
蓝桥杯-02-python组考点与14届真题
蓝桥杯-02-python组考点与14届真题
|
25天前
|
Python
第十三届蓝桥杯B组python(试题A:排列字母)
第十三届蓝桥杯B组python(试题A:排列字母)
30 0
|
25天前
|
人工智能 算法 测试技术
第十四届蓝桥杯第三期模拟赛 【python】(二)
第十四届蓝桥杯第三期模拟赛 【python】(二)
|
25天前
|
测试技术 Python
第十四届蓝桥杯第三期模拟赛 【python】(一)
第十四届蓝桥杯第三期模拟赛 【python】(一)
|
25天前
|
人工智能 算法 测试技术
第十四届蓝桥杯第二期模拟赛 【python】
第十四届蓝桥杯第二期模拟赛 【python】
|
7月前
|
机器学习/深度学习 开发者 索引
蓝桥杯系列6——python技巧
蓝桥杯系列6——python技巧
112 0