21920번 : 서로소 평균
문제)
효성이는 길이가 인 수열 에서 와 서로소인 수들을 골라 평균을 구해보려고 한다.
효성이를 도와 이를 계산해주자.
입력 :
첫 번째 줄에 입력될 수들의 개수 이 주어진다. (2≤N≤500,000)
두 번째 줄에는 수열 를 이루는 자연수 가 공백으로 구분되어 주어진다. (2≤a_i≤1,000,000)
수열 에 와 서로소인 수가 최소 1개 이상 존재한다.
마지막 줄에는 가 주어진다. (2≤X≤1,000,000)
출력 :
첫째 줄에 수열 A에서 X와 서로소인 수들의 평균을 출력한다.
절대/상대 오차는 10-6까지 허용한다.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#include <iostream>
#include <iomanip>
using namespace std;
int n, x;
int numbers[500010];
// 유클리드 호제법
// 두 수의 최대 공약수를 구해, 그 결과 값이 1이라면
// 두 수는 서로소이다.
int get_gcd(int big, int small)
{
if (small == 0)
{
return big;
}
else
{
return get_gcd(small, big % small);
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> numbers[i];
}
cin >> x;
double cnt = 0;
double total = 0;
for (int i = 0; i < n; i++)
{
int num = numbers[i];
if (get_gcd(x, num) == 1)
{
cnt++;
total += numbers[i];
}
}
cout.precision(7);
cout << total / cnt;
return 0;
}
|
cs |
출처 : 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
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 21922번 : 학부 연구생 민상 (C++) (0) | 2023.08.20 |
---|---|
[백준] 21937번 : 작업 (C++) (0) | 2023.08.19 |
[백준] 17090번 : 미로 탈출하기 (C++) (0) | 2023.08.18 |
[백준] 18404번 : 현명한 나이트 (C++) (0) | 2023.08.17 |
[백준] 1439번 : 뒤집기 (C++) (0) | 2023.08.17 |