#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int gcd(int a, int b) {
int z;
int x = a;
int y = b;
while (true) {
z = x %y;
if (0 == z)
break;
x = y;
y = z;
}
return y;
}
int main() {
string s;
vector<int> nums;
int C,max;
cin >> C;
getline(cin, s);
while (C--)
{
getline(cin, s);
int num = 0;
for (int i = 0; i < s.length(); i++)
{
if (s[i] == ' ') {
nums.push_back(num);
num = 0;
}
else {
num = num * 10 + (s[i] - '0');
}
}
nums.push_back(num);
//for (int i = 0; i < nums.size(); i++) cout << nums[i] << " ";
for (int i = 0; i < nums.size(); i++)
{
for (int j = i + 1; j < nums.size(); j++)
{
int g = gcd(nums[i], nums[j]);
if (g > max) max = g;
}
}
cout << max << endl;
nums.clear();
max = 0;
}
}
미니 대회 때 급하게 푼다고 코드가 지저분함의 끝을 달린다. 문자를 한글자씩 돌면서 숫자변환을 하고 ..
모든 쌍에 대해서 직접 gcd를 실행 해 보는데 잘 생각은 안나지만 더 효율적인 방법이 있을듯
하지만 문제에서 주어진 case 수가 워낙 적어서 저어언혀 문제 없다.
'알고리즘 > BOJ문제풀이' 카테고리의 다른 글
187번째 문제 - 1987 알파벳 (0) | 2016.11.24 |
---|---|
186번째 문제 - 1124 언더 프라임 (0) | 2016.11.24 |
184번째 문제 - 1371 가장 많은 글자 (0) | 2016.11.24 |
미니 대회 (1) | 2016.11.23 |
183번째 문제 - 2667 단지번호붙이기 (0) | 2016.11.23 |