BOJ : https://www.acmicpc.net/problem/9613
9613번: GCD 합
문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1000000을 넘지 않는다. 출력 각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다. 예제 입
www.acmicpc.net
전체를 탐색하며 쌍을 만들고 최대공약수를 계속 더해주면 된다.
* long long 을 필수사용하자!
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
|
#include <iostream>
using namespace std;
int arr[100];
int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
int main() {
int T, n;
cin >> T;
while (T--) {
cin >> n;
for (int i = 0; i < n; i++) cin >> arr[i];
long long total = 0;
for (int i = 0; i < n-1; i++) {
for (int k = i + 1; k < n; k++) {
if (arr[i] >= arr[k]) total += gcd(arr[i], arr[k]);
else total += gcd(arr[k], arr[i]);
}
}
cout << total << endl;
}
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
'algorithm > BOJ' 카테고리의 다른 글
BOJ 2745번 진법 변환 (0) | 2020.01.13 |
---|---|
BOJ 11005번 진법 변환2 (0) | 2020.01.13 |
BOJ 1850번 최대공약수 (0) | 2020.01.12 |
BOJ 1934번 최소공배수 (0) | 2020.01.12 |
BOJ 2609번 - 유클리드 호제법 (0) | 2020.01.12 |