Escreva um programa que use dois números inteiros como entrada; o primeiro pode ser qualquer número inteiro e o segundo é menor ou igual ao número de dígitos no primeiro número. Deixe esses números serem a
e b
respectivamente.
O programa fará o seguinte
- Concatene um número mínimo de
1
s até o final dea
modo que o número de dígitos ema
seja divisível porb
. - Divida
a
ao longo de todos osb
dígitos. - Multiplique os dígitos em cada seção juntos.
- Concatene os produtos juntos (se um dos números for zero, concatene
0
). - Repita esse processo até que um número estritamente menor que
b
dígitos seja formado. Imprima isso como saída, assim como o número do processo é repetido. As unidades não são necessárias, mas é alguma forma de separação entre o número final e o número de iterações.
Nos seguintes casos de teste, as etapas individuais são mostradas com o objetivo de entender. Não é necessário que o seu programa exiba as etapas.
Caso de teste 1
1883915502469, 3
Passos
1883915502469 //Iteration 1
188391550246911
188 391 550 246 911
64 27 0 48 9
64270489 //Iteration 2
642704891
642 704 891
48 0 72
48072 //Iteration 3
480721
480 721
0 14
014 //Iteration 4
0
Saída de amostra :0, 4
Caso de teste 2
792624998126442, 4
Passos
792624998126442 //Iteration 1
7926249981264421
7926 2499 8126 4421
756 648 96 32
7566489632 //Iteration 2
756648963211
7566 4896 3211
1260 1728 6
126017286 //Iteration 3
126017286111
1260 1728 6111
0 112 6
01126 //Iteration 4
01126111
0112 6111
0 6
06
Saída de amostra :06, 4
O programa deve retornar um erro (ou simplesmente não imprimir nada) se b>len(a)
. Além disso, b
não pode ser igual a 1 ou o programa resultará em um loop infinito.
Isso é código de golfe, portanto, regras padrão se aplicam. O código mais curto em bytes vence.
a
e também são incluídos na saída?Respostas:
CJam, 42 bytes
Teste aqui.
fonte
Perl 6, 116 bytes
fonte
Pitão, 32 bytes
Demonstração
Recebe entrada em duas linhas,
a
seguido porb
. Dá saída em duas linhas, operações seguidas de resultado.Almofada:
+z*\1%_lzQ
Picar:
c ... Q
Converta na lista de entradas:
sMM
Tome produtos:
*M
Converta de volta para str:
jk
Atribuir de volta:
=z
Verifique a rescisão:
<l ... Q
Iterações de impressão realizadas:
f ... )
Resultado da impressão:
z
Verificação inicial da impressão ou não de qualquer coisa:
IglzQ
fonte