蓝桥杯python:四平方和

题目:四平方和定理,又称为拉格朗日定理。每个整数都能表示为至多4个数的平方和。如果把0算进去,就正好可以表示为4个数的平方和。对于给定的一个正整数,可能存在多种平方和的表示方法。要求你对4个数进行排序:0<=a<=b<=c<=d,并对所有的可能表示法按a,b,c,d为联合主键升序排列,最后输出第一个表示法。程序输入为一个整数N(N<5 000 000),要求输出4个非负整数,按从小到大排列,中间用空格分开。

例如,输入773535 输出 1 1 267 838

程序说明:
因为涉及到平方和,因此这里需要导入math库,运用到sqrt。此程序采用先从0开始,若第四位数的平方不能满足等于目标数,则开始从第三位开始进行数字的增加,若通过判断发现第三位和第四位各平方相加还是小于目标数,则开始进行第二位数字的增加…若最后四个位置的数平方相加后等于目标数,则直接输出它们即可
全部代码:

import math

n = int(input())
a = 0
while a ** 2 <= n:
    b = a
    while a ** 2 + b ** 2 <= n:
        c = b
        while a ** 2+ b ** 2 + c ** 2 <= n:
            d = int(math.sqrt(n - a ** 2 - b ** 2 - c ** 2))
            if a ** 2 + b ** 2 + c ** 2 + d ** 2 == n:
                print(a, b, c, d)
                break
            c += 1
        b += 1
    a += 1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值