Abro este post para proponer problemas a resolver mediante Java y discutir sobre las posibles soluciones que vayamos proponiendo. Por ejemplo, todos los años, Google, organiza un campeonato a nivel mundial de programación en el cual se les presenta a los participantes una serie de problemas que deben resolver. Este campeonato se divide en distintas fases, en 2012, este problema que presento a continuación correspondía al primero de la ronda clasificatoria:
NÚMEROS RECICLADOS
¿Alguna vez te has sentido frustrado con la televisión porque la gran mayoría de programas son practicamente idénticos, reciclados una y otra vez? Personalmente no veo mucho la televisión, pero me he sentido así alguna vez con los números.
Me explico, una pareja de números enteros distintos (n, m) son reciclados si podemos obtener m moviendo algunos dígitos del final de n al principio sin cambiar su orden. Por ejemplo, (12345, 34512) es una pareja reciclada ya que podemos obtener 34512 moviendo 345 del final de 12345 al principio. Nótese que n y m deben tener el mismo número de cifras y que, ni n ni m pueden tener ceros a la izquierda.
Dados dos números enteros A y B con el mismo número de dígitos y sin ceros a la izquierda, ¿cuántas parejas recicladas distintas (n, m) existen con A <= n < m <= B?
Entrada
La primera línea de la entrada contiene el número de casos a analizar, T. T casos vienen a continuación. Cada caso consiste en una única línea con dos enteros A y B.
Salida
Por cada caso, la salida de nuestro programa contendrá
, donde x es el número de caso (empezando en 1), e y es el número de parejas recicladas (n, m) diferentes con A <= n < m <= B.
Ejemplo:
Input
4
1 9
10 40
100 500
1111 2222
Output
Case #1: 0
Case #2: 3
Case #3: 156
Case #4: 287
El archivo de entrada para probar vuestro programa es el siguiente:
Input.txt
Y si todo ha funcionado correctamente debe daros un archivo de salida como el siguiente:
Output.txt
Os animo a que propongais soluciones propias a este problema y que propongais otros.
Un saludo.