문제
효성이는 길이가 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)
'알고리즘' 카테고리의 다른 글
[Python] BOJ 백준 21923 곡예 비행 (0) | 2022.04.04 |
---|---|
[Python] BOJ 백준 21922 학부연구생 민상 (0) | 2022.04.04 |
[Python] BOJ 백준 21921 블로그 (0) | 2022.04.04 |
[Python] BOJ 백준 21919번 소수최소공배수 (0) | 2022.04.03 |
[Python] BOJ 백준 21918번 전구 (0) | 2022.04.03 |