이번 문제는 빈 상자 안에 빈 상자를 넣는 문제입니다.
11개의 큰 상자 중 몇 개의 각 상자 안에 중간 상자를 8개 넣을 수 있습니다.
다시 중간 상자 하나에는 작은 상자 8개를 넣을 수 있습니다.
이 과정을 몇 번 반복하여 빈 상자가 102개가 되었을 때 총 상자의 수는 몇 개일까요?
변수 설정에 앞서 문제 해결의 과정을 다음과 같이 진행하겠습니다.
1번에 대해 알 수 있는 건 처음 시작할 때의 상자가 11개라는 것과 마지막 상태에서의 빈 상자가 102개라는 것입니다.
또 빈 상자 8개를 큰 상자에 넣게 되면 상자 수는 8개가 늘어나지만 빈 상자는 7개가 늘어나게 됩니다.
빈 상자의 수를 e
, 총 상자의 수를 b
라고 두었을 때 b, e := b+8, e+7
이라는 식을 만들 수 있습니다. 이 식을 반복하는 것이 상자 안에 8개의 상자를 넣는 과정입니다.
문제에서 주어진 중간 상자, 작은 상자 등은 불필요한 세부사항에 포함됩니다. 과정을 몇 번 반복했는지는 변수로 추가할지 생략할지에 따라 풀이가 달라지게 됩니다.
이번엔 몇 번 반복했는지에 대한 부분도 생략해보겠습니다.
이제 불변량을 찾아야 합니다.
불변량을 찾아내는 것은 어렵고 약간의 추측이 필요합니다.
상자를 넣는 과정을 반복하면 총 상자는 b0 + 8
- b0 + 8*2
-b0 + 8*3
과 같은 등차 수열이 됩니다. 동일하게 빈 상자는 e0 + 7
-e0 + 7*2
-e0 + 7*3
과 같이 증가하게 됩니다.
이제 약간의 추측이 필요합니다. 찾고자 하는 불변량도 위와 같이 선형적이라 가정하고 어떤 수 M, N
에 대하여 M*b + N*e
가 불변량이라고 생각해보겠습니다.
이제 (M*b + N*e)[b,e := b+8, e+7] = M*b + N*e
라고 초콜렛 문제와 같이 식을 작성했습니다.
해당 식을 정리하면 8*M + 7*N = 0
이 됩니다.
다시 식을 만족하는 M, N
을 구해보면 M = 7 ∧ N = -8
이 됩니다.
(물론 0이어도 가능하고, M이 -7, N이 8인 경우도 가능합니다. 다만 0인 경우는 모든 대입의 불변량이기에 문제 해결에 큰 도움이 되지 않습니다.)
이제 변수 설정과 불변량 구하기가 끝이 났습니다.
7*b - 8*e
가 불변량이 됨을 알았으며 b, e
의 초기값이 11임을 문제에서 알 수 있습니다.
이에 따라 7*b - 8*e
의 값은 -11이 되고 이 값은 불변량이므로 대입이 몇 번 진행되더라도 값은 변하지 않습니다.
문제에서 주어진 e
의 값은 102이므로 7*b -8*102 = -11
이라는 식을 얻어낼 수 있습니다.
드디어 가장 빈 상자의 개수가 102개 일 때 총 상자는 115개임을 알아냈습니다.
빈 상자의 불변량을 가지고 문제를 일반화 해보겠습니다.
처음에 m
개의 상자가 있고 k
개의 상자를 넣을 수 있으며 마지막에 n
개의 상자가 남았을 때 문제가 공식화 될 수 있는 m, k, n
의 조건이 무엇이 있을까요?
위에서 구한 식을 토대로 변수로 치환해보면 다음과 같습니다.
대입식은 b, e := b+k, e+(k-1)
,
불변량은 (k-1)*b - k*e = -m
이 됩니다.
이때 k=1
인 경우 식이 항 하나가 0이 되어버리니 k
의 조건은 2이상이어야 한다를 붙이고 총 상자의 수 b
를 구하는 식을 도출하면 b = n + (n-m) / (k-1)
이 됩니다.
이제 n
은 최소 m
이고 k
는 2이상이어야 하며, n-m
이 k-1
로 나누어 떨어져야 합니다.