알고리즘/수학
[백준 1850] - [ 수학 최대공약수 ] - 최대공약수 (JAVA)
팡스
2018. 12. 4. 01:42
문제 링크 : https://www.acmicpc.net/problem/1850
이 문제는 어려움을 가장한 쉬운 문제이다.
낮은 정답률에 겁을 먹고 다들 시도를 하지 못한거 같다.
예제 입력 3번의 값이 이 문제는 변태적인 문제다 겁을 먹어라 하는거 같다.
500000000000000000 500000000000000002
예제 입력 1번의
3 4
로 보면 111과 1111의 최대 공약수를 구하면 되겠구나!! 하겠지만
예제 입력 3번은 어떻게 하라고.. 1을 저만치 쓰라고?? 하면서 겁을 먹게 하는거 같다.
그냥 단번에 아 낚시구나 생각했고 두 수의 최대 공약수를 구해보았다.
예제 입력 1 의 입력값 3 4의 최대 공약수는 1
예제 입력 2 의 입력값 3, 6의 최대 공약수는 3
예제 입력 3의 입력값 무진장 큰 두 수의 최대 공약수는 고작 2
구해놓고 나니 어? 답을 구했다.
두 수의 최대 공약수만큼 1을 반복하면 되는 문제였다.
어부지리일 수 있겠지만 머리가 빠릿빠릿하게 돌아가서 풀 수 있었던 문제인거 같긴 하다.
소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long num1 = sc.nextLong(); long num2 = sc.nextLong(); long gcd = getGCD(Math.max(num1, num2), Math.min(num1, num2)); StringBuilder sb = new StringBuilder(); for(int i=1; i <= gcd; i++) sb.append("1"); System.out.println(sb.toString()); } public static long getGCD(long a, long b) { while(b > 0) { long tmp = a; a = b; b = tmp%b; } return a; } } | cs |