trd9116   2년 전

일단 제가 풀어본 방식은 10 12 3 9 일때를 예를들어보면 x자리만 따로 생각했을 때 x 자리에 3이 나올수 있는 경우는 3, 13, 23, 33, 43, ... 이렇게

되더라구요. 그래서 두번째 while 문 안에서 index를 하나씩 증가시켜 가면서 차례대로 3, 13, 23, ... 이 나오도록 한다음 y 자리에도 똑같이

index2 * N + y 가 될테니 두 식을 같다고 했을 때, index * M + x = index2 * N + y 로 놓았을 때 왼쪽에 있는 식에 y를 빼고 N으로 나누었을 때

나머지가 0이 되면 같은 수가 되었다는 식이니 그 때 break를 걸고 빠져 나오는 식입니다. 그런데 문제에서 그랬듯이 마지막 해가 있다고 했으니

수 들이 나아가다가 M과 N의 최소공배수보다 커지면 이미 마지막 해를 지나버렸다는 뜻이므로 break를 걸어주었습니다.

FAQ에 있는 반례들 전부 통과하였구요. https://www.acmicpc.net/board/... 에 어떤분이 올리신 반례를 확인해보았는데 M과 N의 최소공배수 보다

큰 값에서 같아도 답으로 나오도록 되있더라구요

제가 못찾은 반례가 더있는건지 문제에 대한 해석을 제가 잘못한건지 조언좀부탁드립니다

jh05013   2년 전

링크하신 글에 반례가 있습니다.

trd9116   2년 전

그 링크에 반례들은 M과 N의 최소공배수보다 큰 경우라 저는 그 경우를 다 -1 로 출력을 해놨거든요

제가 문제 이해를 잘못한건가요?..

jh05013   2년 전

102408901은 19632와 29745의 최소공배수인 194651280보다 작습니다.

댓글을 작성하려면 로그인해야 합니다.