여기 해답 적어주신 분이 왜 댓글을 지웠을까요;; 39줄의 0을 0LL로 바꾸면 정답처리됩니다!
9613번 - GCD 합
GCD는 Great common divider의 약자로, 최대공약수를 뜻합니다. 최대공약수가 무엇인지는 구글에 찾아보는 게 빠를 겁니다. 제가 처음에 헷갈렸던 부분은 문제 설명인데, 예시를 보면 입력되는 수 중에서 가능한 두 수의 쌍을 모두 구한 다음에, 각 쌍마다의 최대공약수를 구하고, 그렇게 나온 최대공약수를 모두 더한 것이 출력임을 알 수 있습니다.
예컨대 예시의 입력 중 하나인 4 10 20 30 40을 보면, 맨 처음 4는 그 다음에 10 20 30 40의 4가지 수가 나온다는 것을 뜻합니다. 이 4가지 수 중에서 가능한 두 수의 쌍은 (10, 20), (10, 30), (10, 40), (20, 30), (20, 40), (30, 40)가 있죠. 그리고 수 a, b로 이뤄진 쌍의 최대공약수를 gcd(a, b)라 둡시다. 그러면 gcd(10, 20)=10, gcd(10, 30)=10, gcd(10, 40)=10, gcd(20, 30)=10, gcd(20, 40)=20, gcd(30, 40)=10이 됩니다. 이렇게 나온 모든 최대공약수를 다 더하면 10+10+10+10+20+10=70으로 예시의 출력과 같죠.
댓글을 작성하려면 로그인해야 합니다.
cequala 3년 전
첫 시도에서는 메인함수에 있는 벡터 s를 int로 설정했습니다. s는 최대공약수의 합들을 담는 벡터로, 마지막 for문에서 이들을 차례로 출력하게 됩니다. 그런데 70%까지 채점이 되다가 틀려버려서, 질문글을 검색하다 총합들이 int의 범위를 넘어서는 경우를 고려해야 한다는 것을 알게 되었습니다.
하여 s를 long long으로 설정하고 재시도를 해보니, 아예 처음부터 틀렸다고 나오네요... 초기 시도에서 채점이 좀 됐기 때문에 자료형 선언에 대한 문제로 확신했는데, 혹시 다른 문제일까요?