Voltar para os desafios
Médio 0 resolvidos 0% de aceitação

Esvaziando Duas Pilhas de Moedas

Decida se é possível esvaziar duas pilhas removendo moedas em pares.

O que você vai aprender

  • Transformar um processo em equações
  • Verificar condições de divisibilidade e equilíbrio
  • Responder em tempo constante

Problema

Ver original (inglês)

Cada jogada remove duas moedas de uma pilha e uma moeda da outra. Qualquer orientação é permitida. Nunca é permitido remover mais moedas do que restam em uma pilha. Determine se ambas as pilhas podem terminar com zero moedas.

Implemente coin_piles(left, right).

Entrada

left: O número de moedas na pilha da esquerda.

right: O número de moedas na pilha da direita.

Saída

Retorne true se for possível esvaziar ambas as pilhas; caso contrário, retorne false.

Restrições

0 ≤ left, right ≤ 1.000.000.000. Duas pilhas vazias já são consideradas um resultado bem-sucedido.

Exemplos

Exemplo 1
Entrada:
left = 4
right = 2

Saída esperada:
expected = True
Entrada:
long long left = 4;
long long right = 2;

Saída esperada:
bool expected = true;
Entrada:
long left = 4;
long right = 2;

Saída esperada:
bool expected = true;

Explicação

Remova (2, 1) duas vezes: (4, 2) → (2, 1) → (0, 0).

Exemplo 2
Entrada:
left = 4
right = 1

Saída esperada:
expected = False
Entrada:
long long left = 4;
long long right = 1;

Saída esperada:
bool expected = false;
Entrada:
long left = 4;
long right = 1;

Saída esperada:
bool expected = false;

Explicação

A única jogada possível deixa (2, 0), e após isso não há como esvaziar a pilha da esquerda.

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

Cada jogada remove exatamente três moedas no total, então a quantidade total de moedas precisa seguir esse padrão.

Dica 2

Nenhuma pilha pode ficar abaixo de zero, então uma pilha não pode ultrapassar o que a outra suporta.

Dica 3

Verifique tanto o total quanto a diferença entre as pilhas.

Complexidade esperada

tempo O(1), espaço extra O(1)

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.