Search
Duplicate
📗

GCD 합

주차
문제번호
9613
언어
C++
티어
실버
유형
수학
정수론
유클리드 호제법
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

입력 받은 케이스들의 수를 내림차순으로 정렬하여 유클리드 호제법을 사용하게 편하게 정렬
유클리드 호제법으로 각 케이스에 대한 모든 최대공약수를 구함

놓쳤던 부분

answer과 int 자료형으로는 부족함

코드

2024 KB

0 ms

#include <iostream> #include <vector> #include <algorithm> using namespace std; int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int main(void) { int t; int n; vector<int> v; long long answer; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> t; for (int i = 0; i < t; i++) { cin >> n; v.resize(n); answer = 0; for (int j = 0; j < n; j++) cin >> v[j]; sort(v.begin(), v.end(), greater<>()); for (int j = 0; j < n; j++) { for (int k = j + 1; k < n; k++) { answer += gcd(v[j], v[k]); } } cout << answer << "\n"; } return (0); }
C++
복사