https://www.acmicpc.net/problem/9613
9613번: GCD 합
문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 ��
www.acmicpc.net
문제
양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.
출력
각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.
코드
#include <iostream>
#include <vector>
using namespace std;
int gcd(int x, int y){
int temp, r;
if(y>x) {
temp=x;
x=y;
y=temp;
}
while(1) {
r=x%y;
if(r==0)
return y;
else {
temp=y;
y=x%y;
x=temp;
}
}
}
int main(){
int t;
cin>>t;
for(int i=0; i<t; i++) {
int n;
cin>>n;
vector<int> vec(n);
for(int j=0; j<n; j++) cin>>vec[j];
long long sum=0;
for(int k=0; k<n-1; k++)
for(int l=k+1; l<n; l++)
sum+=gcd(vec[k], vec[l]);
cout<<sum<<endl;
}
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
백준 2734번: 진법 변환 (0) | 2020.05.18 |
---|---|
백준 11005번: 진법 변환 2 (0) | 2020.05.18 |
백준 1850번: 최대공약수 (0) | 2020.05.18 |
백준 1934번: 최소공배수 (0) | 2020.03.16 |
백준 2609번: 최대공약수와 최소공배수 (0) | 2020.03.16 |