SPOJ Problem Set (sulamericana)
3738. Bases
Problema: BASES
|
O que você consegue se multiplicar 6 por 9? A resposta, é claro, é 42, mas somente se você fizer
os cálculos na base 13.
Dado um inteiro B >= 2, o sistema de numeração na base B é a maneira de escrever inteiros
usando somente dígitos entre 0 e B - 1, inclusive. Em um número escrito na base B, o dígito mais à direita
tem seu valor multiplicado por 1, o segundo mais à direita tem seu valor multiplicado por B, o terceiro mais
à direita tem seu valor multiplicado por B^2, e assim por diante.
Algumas equações são verdadeiras ou falsas dependendo da base em que são consideradas. A equação 2 + 2 = 4,
por exemplo, é verdadeira para qualquer B >= 5 - ela não vale para a base 4, por exemplo, visto que não existe
dígito '4' na base 4. Por outro lado, uma equação como 2 + 2 = 5 nunca é verdadeira.
Escreva um programa que, dada uma equação, determine em quais bases ela é verdadeira.
Entrada
Cada linha da entrada contém um caso de teste; cada caso de teste é uma equação da forma "EXPR=EXPR",
onde ambos "EXPR" são expressões aritméticas com no máximo 17 caracteres.
Todas expressões são válidas e contém apenas os caracteres '+', '*' e os dígitos entre '0' e '9'. Nenhuma
expressão contém sinais de mais no começo da equação e nenhum número tem zeros à esquerda
O final da entrada é indicado por uma linha contendo apenas "=".
Saída
Para cada caso de teste da entrada seu programa deve produzir uma única linha de saída, indicando
para quais bases a equação dada é válida
Se a expressão for verdadeira para infinitas bases, imprima "B+", onde B é a primeira
base para a qual a equação é válida.
Se a expressão for válida apenas para um conjunto finito de bases, imprima elas em ordem crescente,
separadas por espaço.
Se a expressão não for verdadeira em nenhuma base, imprima o caractere '*'.
Exemplo de entrada
6*9=42
10000+3*5*334=3*5000+10+0
2+2=3
2+2=4
0*0=0
=
Saída para o exemplo de entrada
13
6 10
*
5+
2+
| Adicionado por: | Wanderley Guimarães |
| Data: | 2009-01-18 |
| Tempo limite: | 1s
|
| Tamanho do fonte: | 50000B |
| Linguagem permitida: | Todas exceto: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL |
| Origem: | Final Sul-Americana da Maratona de Programação da ACM 2008 |