• EularProject 39:给周长推断构成直角三角形个数


    华电北风吹
    天津大学认知计算与应用重点实验室
    完毕日期:2015/7/30

    Integer right triangles
    Problem 39
    If p is the perimeter of a right angle triangle with integral length sides, {a,b,c}, there are exactly three solutions for p = 120.
    {20,48,52}, {24,45,51}, {30,40,50}
    For which value of p ≤ 1000, is the number of solutions maximised?
    Answer:
    840
    Completed on Thu, 30 Jul 2015, 04:51
    Go to the thread for problem 39 in the forum.
    利用的性质
    b+c=la
    cb=a2la
    a<=b<c
    a+b>c
    当中第二个性质整除a能够大大降低运算时间

    __author__ = 'zhengyi'
    
    def IsRightTriangle(abc):
        a2=pow(abc[0],2)
        b2=pow(abc[1],2)
        c2=pow(abc[2],2)
        temp=a2+b2-c2
        if temp==0:
            return 1
        else:
            if temp<0:
                return 0
            else:
                return -1
    
    def Count(perimeter):
        count=0
        for a in range(1,perimeter//3):
            if pow(a,2)%(perimeter-a)!=0 or pow(a,2)//(perimeter-a)>=a:
                continue
            for b in range(max(perimeter//2-a,a),perimeter//2):
                temp=IsRightTriangle([a,b,perimeter-a-b])
                if temp==-1:
                    break
                else:
                    count+=temp
        return count
    
    count=0
    p=0
    for i in range(1,1001):
        temp=Count(i)
        if temp>count:
            p=i
            count=temp
    
    print(p)
  • 相关阅读:
    08-01集合运算
    07-03成员运算符
    07-02集合
    07-01结构与封装
    06-01字符串格式化.md
    06-03线性结构与切片
    06-02字符串与bytes
    05-02命名元组
    05-01元组
    04-01列表与常用操作
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7258336.html
Copyright © 2020-2023  润新知