adfsfsf   2년 전

b를 줄여가면서 a가 나올 수 있는지 확인하는 방법으로 갔습니다.

변환 과정에서 1을 뒤에 붙이는 건 10을 곱한 후 1을 더한 것입니다.

변환 과정에서 2배를 하는 건 2를 곱하는 것입니다.

역으로 가면, 10으로 나눈 나머지가 1이면 10을 곱한 후 1을 더해서 만들었다고 볼 수 있습니다. 1은 2의 배수가 아니므로 이 경우가 아니면 만들어질 수 없습니다. 2로 나눠지는 수면 2로 곱해진 수입니다. 따라서 2로 나눠야 합니다.

이렇게 역산을 하다가 a와 같아지면 횟수 + 1을 출력, a보다 작아지면 자동으로 while문을 나가서 -1을 출력합니다.

a는 항상 1 이상이므로 b가 0이 되면 바로 while문을 나갑니다.

palilo   2년 전

a = 1

b = 3

adfsfsf   2년 전

아, 그렇네요... 둘 다 불가능하면 그냥 나가야 하는데... 감사합니다.

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