python有红黄蓝三种颜色的求_几道题目,求解答

这是一个Python程序,用于计算给定长度的绳子如何分割成三段,使得这三段可以构成合法的三角形。程序首先检查输入是否为正整数且大于2,然后通过三层循环遍历所有可能的三边组合,根据三角形的性质(任意两边之和大于第三边)筛选有效组合,并输出结果。最后返回满足条件的三角形个数。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

第一题:

"""

输入绳子的长度n,将该绳子分成三段,每段的长度为正整数,输出由该三段绳子能够组成三角形的个数

"""

import sys

help_msg = """使用说明: /path/to/python /path/to/01.py n

参数说明:n: 代表三角形长度

"""

def get_triangle_num(length):

"""

根据绳子长度,求可以生成三角形的数目

前提条件:

1.三角形单边都是正整数,所以允许的最小长度等于1

2.因为三角形两边之和第三边,所有最大边长小于1/2 * n

3.另外一个隐含条件就是三边直接为n

:param length:

:return:

"""

if (not isinstance(length, int)) or (length < 3):

return 0

fit_set = set()

for n1 in range(1, int(length / 2) + 1):

for n2 in range(1, int(length / 2) + 1):

for n3 in range(1, int(length / 2) + 1):

# 三边之和

if (n1 + n2 + n3) != length:

continue

# 对符合第一个条件的数据,进行排序

tmp_li = [n1, n2, n3]

tmp_li = sorted(tmp_li)

if (tmp_li[0] ** 2 + tmp_li[1] ** 2) < (tmp_li[2] ** 2):

continue

tmp_str = '_'.join([str(x) for x in tmp_li])

if tmp_str not in fit_set:

print('--' * 10)

print("n1={0},n2={1},n3={2}".format(n1, n2, n3))

print(tmp_str)

fit_set.add(tmp_str)

return len(fit_set)

if __name__ == '__main__':

if len(sys.argv) != 2:

print(help_msg)

exit()

n = int(sys.argv[1])

num = get_triangle_num(n)

print('三角形数目:{0}'.format(num))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值