본문 바로가기

백준 문제 풀이

백준 9613번 GCD 합

https://www.acmicpc.net/problem/9613

 

9613번: GCD 합

첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진

www.acmicpc.net

 

단순히 모든 수의 쌍을 골라서 최대공약수를 유클리드 호제법으로 구하고 더하면 되는 문제이다.

답이 int형 범위를 벗어날 수 있어 long long int를 사용해야 한다.

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int num[100];

int gcd(int a, int b)
{
	if (!(a % b))
		return b;
	return gcd(b, a % b);
}

int main()
{
	int n, t;
	long long int count;
	scanf("%d", &t);

	for (int i = 1; i <= t; i++)
	{
		scanf("%d", &n);
		count = 0;
		for (int j = 0; j < n; j++)
		{
			scanf("%d", &num[j]);
		}
		for (int j = 0; j < n - 1; j++)
		{
			for (int p = j + 1; p < n; p++)
				count += gcd(num[j], num[p]);
		}
		printf("%lld\n", count);
	}

	return 0;
}

'백준 문제 풀이' 카테고리의 다른 글

백준 11404번 플로이드  (0) 2021.03.16
백준 1967번 트리의 지름  (0) 2021.03.16
백준 13305번 주유소  (0) 2021.03.16
백준 15483번 최소 편집  (0) 2021.03.16
백준 2197번 분해 반응  (0) 2021.03.16