백준/여러가지 문제들
(c++)백준 9613번: GCD 합
Nimgnoej
2020. 6. 17. 09:16
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;
}