Study hard
(c++)백준 9613번: GCD 합 본문
https://www.acmicpc.net/problem/9613
9613번: GCD 합
문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 ��
www.acmicpc.net
[풀이]
이중for문으로 원소가 2개인 중복없는 쌍들을 만들 수 있다.
GCD는 유클리드 호제법으로 풀었다.
72 = 34 * 2 + 4 34 = 4 * 8 + 2 4 = 2 * 2 72, 34의 최대공약수: 2 |
#include <iostream>
#include <vector>
using namespace std;
int t, n;
int Num[101];//양의 정수 n개 저장
vector<int>Pair;//최대 공약수 구할 쌍
long long gcdSum = 0;
int getGcd(int a, int b) {
int c;
while (b != 0) {
c = a % b;
a = b;
b = c;
}
return a;
}
void solution() {
cin >> t;
while (t--) {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> Num[i];
}
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
gcdSum += getGcd(Num[i], Num[j]);
}
}
cout << gcdSum << endl;
gcdSum = 0;
}
}
int main() {
solution();
return 0;
}
'백준 > 여러가지 문제들' 카테고리의 다른 글
(c++)백준 2745번: 진법 변환 (0) | 2020.06.17 |
---|---|
(c++)백준 11005번: 진법 변환 2 (0) | 2020.06.17 |
(c++)백준 2609번: 최대공약수와 최소공배수 (0) | 2020.06.15 |
(c++)백준 1168번: 요세푸스 문제 2 (0) | 2020.06.14 |
(c++)백준 1158번: 요세푸스 문제 (0) | 2020.06.14 |