728x90
from itertools import combinations
def gcd(y, x):
if y < x: # 항상 y가 더 크게
y, x = x, y
while x != 0:
t = y % x
y, x = x, t
return abs(y)
N, K = map(int, input().split())
n_list = list(map(int, input().split()))
# N의 원소와 K 의 최대공약수
n_gcd = [0] * N
for i in range(N):
n_gcd[i] = gcd(n_list[i], K)
result = 0
for x, y, z in combinations(n_gcd, 3):
if gcd(x*y*z, K) == K:
result += 1
print(result)
못풀었다. 플래티넘은 너무 어렵다. 파이썬으로는 못푸는걸까?
우선 n_list와 K의 최대 공약수를 구해서 그 최대 공약수를 곱했을때의 K가 나뉘면 값을 하나씩 올려고 했다.
예제는 풀었는데 시간초과의 벽은 넘지 못했다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 1242 소풍 파이썬 (0) | 2021.03.27 |
---|---|
[백준] 12904 A와B python (0) | 2021.03.26 |
[백준] 12871 무한 문자열 (0) | 2021.03.26 |
[백준] 13706 제곱근 python (1) | 2021.03.25 |
[백준] 12907 동물원 (0) | 2021.03.25 |