华电北风吹
天津大学认知计算与应用重点实验室
完毕日期: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.
利用的性质

当中第二个性质整除能够大大降低运算时间

__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)

相关文章:

  • 2021-11-25
  • 2022-12-23
  • 2021-12-26
  • 2021-07-06
  • 2021-09-03
  • 2021-12-07
  • 2022-12-23
  • 2022-01-11
猜你喜欢
  • 2021-12-17
  • 2022-12-23
  • 2022-02-12
  • 2022-12-23
  • 2022-01-09
  • 2021-09-04
  • 2021-09-05
相关资源
相似解决方案