[Python] BOJ 백준 21920 서로소평균

김민규·2022년 9월 26일
0

Python

목록 보기
3/13

문제


효성이는 길이가 N인 수열 A에서 X와 서로소인 수들을 골라 평균을 구해보려고 한다.

효성이를 도와 이를 계산해주자.

첫째 줄에 수열 A에서 X와 서로소인 수들의 평균을 출력한다.

절대/상대 오차는 10**6까지 허용한다.


 풀이


서로소는 두 수의 최대공약수가 1인 경우를 말한다. 최대공약수를 구하는 함수를 이용해서 쉽게 풀 수 있었다. 

최대공약수 혹은 최소공배수를 이용하는 문제들은 자주 등장하기 때문에 외워두는 편이 정신건강에 이로운 것 같다. 

import sys

si = sys.stdin.readline
n = int(si())
arr = list(map(int, si().split()))
x = int(si())
answer, cnt = 0, 0


def gcd(a, b):
    while b:
        a, b = b, a % b
    return a


for i in arr:
    if gcd(x, i) == 1:
        answer += i
        cnt += 1

print(answer / cnt)
profile
Smart Contract Developer

0개의 댓글