본문 바로가기
PS(Problem Solving)/백준_BOJ

[백준] 21920번 - 서로소 평균 (C++) 문제 및 풀이

by 초코칩프라푸치노 2022. 3. 11.

문제) 백준 - 수학 - 서로소 평균

https://www.acmicpc.net/problem/21920

 

21920번: 서로소 평균

첫 번째 줄에 입력될 수들의 개수 $N$이 주어진다. $(2 \le N \le 500,000)$ 두 번째 줄에는 수열 $A$를 이루는 자연수 $A_{i}$ 가 공백으로 구분되어 주어진다. $(2 \le A_{i} \le 1,000,000)$ 수열 $A$에 $X$와 서로

www.acmicpc.net

 

서로소를 만족하는 수들의 평균을 구하는 문제였습니다. 유클리드 호제법을 통해 서로소를 판별합니다. 

 

C++ 소스코드)

#include <bits/stdc++.h>
#define endl "\n"
#define ll long long
#define INF 987654321
#define MAX 500001
#define PRIMEMAX 1000001
#define int ll
using namespace std;
int N;
int arr[MAX];
int X;
// 6 8
int solve(int a, int b){
if(a > b) swap(a, b);
if(b % a == 0) return a;
return solve(b % a, a);
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> N;
for(int i = 0; i < N; ++i)
cin >> arr[i];
cin >> X;
double ans = 0;
int cnt = 0;
for(int i = 0; i < N; ++i){
if(solve(X, arr[i]) == 1){
cnt++;
ans += arr[i];
}
}
printf("%lf",ans / cnt);
return 0;
}
view raw 21920.cpp hosted with ❤ by GitHub

 

반응형

댓글