#include <stdio.h> #include <iostream> #include <algorithm> #include <map> #include <string> #include <vector> #include <queue> using namespace std; int test; vector<int> v; vector<int> choice; vector<int> reserve; // 유클리드 호제법 int gcd(int a, int b) { if(b == 0) { return a; } else { return gcd(b, a%b); } } void DFS(int idx, int cnt) { if(cnt == 2) { int GCD = gcd(choice[0], choice[1]); reserve.push_back(GCD); return; } for(int i = idx; i < v.size(); i++) { choice.push_back(v[i]); DFS(i+1, cnt+1); choice.pop_back(); } } int main(void) { // freopen("B9613_input.txt", "r", stdin); cin >> test; for(int T = 1; T <= test; T++) { v.clear(); reserve.clear(); int N; cin >> N; for(int i = 1; i <= N; i++) { int num; cin >> num; v.push_back(num); } DFS(0, 0); long long sum = 0; for(int i = 0; i < reserve.size(); i++) { sum += reserve[i]; } cout << sum << endl; } return 0; } | cs |
'Baekjoon > Math' 카테고리의 다른 글
[백준 1212] 8진수 2진수 (Math) (C/C++) (0) | 2020.01.24 |
---|---|
[백준 1373] 2진수 8진수 (Math) (C/C++) (0) | 2020.01.24 |
[백준 11005] 진법 변환2 (Math) (C/C++) (0) | 2020.01.24 |
[백준 2745] 진법 변환 (Math) (C/C++) (0) | 2020.01.24 |
[백준 2609] 최대공약수와 최소공배수 (Math) (C/C++) (0) | 2020.01.24 |