#43817: pythonTLE求救


hansjiang1017@gmail.com (單純想出題所以在拚30%)

學校 : 不指定學校
編號 : 278037
來源 : [111.242.102.214]
最後登入時間 :
2024-11-12 18:30:55
b557. 直角三角形 | From: [111.242.78.200] | 發表日期 : 2024-11-02 10:41

def sort(data):
    n = len(data)
    for i in range(0, n-1):
        for j in range(0, n-i-1):
            if data[j] > data[j+1]:
                temp = data[j]
                data[j] = data[j+1]
                data[j+1] = temp
    return(data)
T = int(input())
for _ in range(T):
    N = int(input())
    a_i = list(map(int, input().split()))
    if N < 3:
        print(0)
    else:
        a_i = sort(a_i)
        count = 0
        for i in range(N-2):
            for j in range(i+1,N-1):
                for k in range(j+1,N):
                    if (a_i[i]^2) + (a_i[j]^2) == a_i[k]^2:
                        count += 1
        print(count)

 
#43826: Re: pythonTLE求救


hansjiang1017@gmail.com (單純想出題所以在拚30%)

學校 : 不指定學校
編號 : 278037
來源 : [111.242.102.214]
最後登入時間 :
2024-11-12 18:30:55
b557. 直角三角形 | From: [111.242.78.200] | 發表日期 : 2024-11-03 13:18

T = int(input())
for _ in range(T):
    N = int(input())
    a_i = list(map(int, input().split()))
    if N < 3:
        print(0)
    else:
        a_i.sort()
        count = 0
        for i in range(N-2):
            for j in range(i+1,N-1):
                for k in range(j+1,N):
                    if (a_i[i]^2) + (a_i[j]^2) == a_i[k]^2:
                        count += 1
        print(count)



 
#44017: Re: pythonTLE求救


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 不指定學校
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2024-11-23 20:24:16
b557. 直角三角形 | From: [123.192.228.253] | 發表日期 : 2024-11-05 17:41

數字有可能是重複的,測資有可能是 3 3 3 4 4 4 5 5 5 這種形式

可以紀錄一下數字出現的頻率,然後直接用集合去重後再 sorted()

這樣就可以過了

 
#44257: Re: pythonTLE求救


hansjiang1017@gmail.com (單純想出題所以在拚30%)

學校 : 不指定學校
編號 : 278037
來源 : [111.242.102.214]
最後登入時間 :
2024-11-12 18:30:55
b557. 直角三角形 | From: [111.242.102.214] | 發表日期 : 2024-11-18 18:43

數字有可能是重複的,測資有可能是 3 3 3 4 4 4 5 5 5 這種形式

可以紀錄一下數字出現的頻率,然後直接用集合去重後再 sorted()

這樣就可以過了


過了,

太感謝了

T = int(input())
for _ in range(T):
    N = int(input())
    a_i = list(map(int, input().split()))
    a = list(set(sorted(a_i)))
    times = []
    count = 0
    for i in a:
        times.append(a_i.count(i))
    if N < 3:
        print(0)
    elif len(times) == 3:
        if (a[0]^2) + (a[1]^2) == a[2]^2:
            count = times[0] * times[1] * times[2]
    else:
        N = len(a)
        for i in range(N-2):
            for j in range(i+1,N-1):
                for k in range(j+1,N):
                    if a[i]**2 + a[j]**2 == a[k]**2:
                        count += times[i] * times[j] * times[k]
    print(count)
                        
                        

 

 
ZeroJudge Forum