SPOJ Brasil

Problem hidden
This problem was hidden by Editorial Board member probably because it has incorrect language version or invalid test data, or description of the problem is not clear.

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

SPOJ System © 2012 Sphere Research Labs | Projekty informatyczne i aplikacje na zamówienie. All Rights Reserved.