728x90
반응형
문제 바로가기
문제:
양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.
입력:
첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.
출력:
각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.
풀이:
import math
import sys
from itertools import combinations
sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')
T = int(input())
for _ in range(T):
arr =list(map(int,sys.stdin.readline().split(" ")))
n = arr[0] ; del arr[0]
res = 0
for i in list(combinations(arr,2)):
x, y = i[0],i[1]
res += math.gcd(x,y)
print(res)
arr로 들어온 숫자중에서 2개를 뽑아 최대공약수를 구해서 res에 더해주는 식으로 한다.
그래서 2개를 뽑기 위해 combinations 를 사용해주었고
math 내장함수 gcd를 사용하여 두 수의 최대공약수를 res에 더해주었다.
반응형
댓글