ForHosting KIT · Ferramentas para dev

Verificador de representação com duas moedas coprimas

O verificador de representação com duas moedas determina se um alvo não negativo pode ser formado com qualquer quantidade não negativa de duas denominações informadas.

● BetaGrátis · no seu navegador
Use pelo WebAPIE-mailTelegramApp em breve

As denominações precisam ser coprimas, condição que permite resolver o problema com precisão por aritmética modular. Quando o alvo é representável, o resultado traz um par exato de quantidades de moedas; caso contrário, informa claramente que esse par não existe. A ferramenta é útil em experimentos numéricos, exercícios de matemática discreta, projetos de denominações e validação de combinações com tamanho exato sem busca exaustiva.

Defina corretamente o problema das duas moedas

Informe duas denominações inteiras positivas em coin_a e coin_b e, em seguida, um alvo inteiro não negativo. O verificador procura inteiros não negativos count_a e count_b para os quais a quantidade da primeira moeda multiplicada por coin_a, somada à quantidade da segunda multiplicada por coin_b, seja exatamente igual ao alvo. Portanto, um resultado representável não indica apenas um valor próximo ou uma combinação abaixo de um orçamento: a igualdade precisa ser exata e nenhuma quantidade pode ser negativa. Zero é um alvo válido, pois pode ser produzido usando zero moedas de cada tipo. Uma denominação igual a um também é válida e torna representável todo alvo não negativo. As três entradas devem ser inteiros seguros; valores decimais, textos numéricos, infinitos e inteiros fora da faixa exata do JavaScript são recusados para impedir arredondamentos silenciosos. As denominações também precisam ser coprimas, isto é, seu máximo divisor comum deve ser um.

Entenda o cálculo modular

Como as denominações são coprimas, a primeira moeda tem um inverso multiplicativo módulo a segunda. O verificador calcula esse inverso com o algoritmo de Euclides estendido e o utiliza para encontrar o único candidato a count_a entre zero e coin_b menos um que satisfaz a congruência necessária. Ao subtrair do alvo o valor fornecido por essas primeiras moedas, resta uma diferença. Se ela for não negativa, será divisível por coin_b e produzirá um count_b válido; a resposta inclui as duas quantidades como uma prova concreta. Se a diferença for negativa, não existe representação não negativa. Essa conclusão é completa, e não uma heurística: toda outra solução inteira altera count_a por um múltiplo inteiro de coin_b e altera count_b no sentido oposto por um múltiplo inteiro de coin_a. Como o cálculo começa pelo menor candidato não negativo a count_a, uma diferença negativa não pode ser corrigida sem tornar count_a negativo. O método tem tempo logarítmico e evita testar uma longa sequência de quantidades possíveis.

Interprete resultados e erros de entrada

Uma resposta com representable verdadeiro inclui count_a e count_b. Multiplicar cada quantidade pela denominação correspondente recompõe o alvo. O par retornado é uma solução válida; um alvo suficientemente grande pode ter várias representações, e o verificador não pretende listar nem otimizar todas elas. Uma resposta falsa omite as quantidades porque nenhum par se aplica. Diferencie um erro de moedas não coprimas de um resultado falso. Falso significa que a entrada respeita o contrato, mas o alvo específico não pode ser formado. Um erro significa que o par de denominações está fora do domínio definido por esta capacidade e, portanto, nenhuma decisão de representabilidade é emitida. Por exemplo, as moedas 6 e 9 compartilham o fator 3 e são recusadas mesmo quando o alvo é divisível por 3. Essa distinção evita confundir uma violação de domínio com impossibilidade matemática. O cálculo é determinístico, não usa serviços de rede e apresenta o mesmo resultado para as mesmas entradas inteiras exatas no navegador e na API.

Confira um valor exato de pagamento

Descubra se duas denominações disponíveis formam o total necessário e receba um par de quantidades quando isso for possível.

Valide um exercício de teoria dos números

Teste um alvo para duas denominações coprimas e compare a solução apresentada com seu cálculo manual.

Confirme combinações de tamanho fixo

Modele dois tamanhos coprimos de pacote como moedas e veja se uma quantidade exata pode ser montada sem pacotes parciais.

O que significa um alvo ser representável?

Significa que o alvo é igual a coin_a vezes count_a mais coin_b vezes count_b para quantidades inteiras não negativas.

Por que as moedas devem ser coprimas?

Esta capacidade adota o contrato de duas moedas coprimas, que garante o inverso modular usado pelo algoritmo direto. Um par com divisor comum maior que um é recusado como entrada inválida.

Um resultado verdadeiro inclui uma combinação?

Sim. A resposta fornece count_a e count_b como uma combinação exata e não negativa que recompõe o alvo.

A ferramenta retorna todas as combinações possíveis?

Não. Ela decide a representabilidade e fornece uma solução quando existe; não lista nem otimiza todos os pares possíveis.

O alvo pode ser zero?

Sim. O zero é representável usando zero moedas de cada denominação.

Quanto custa uma solicitação de API?

Cada solicitação de API custa US$ 0,002. A versão no navegador pode executar localmente o mesmo cálculo determinístico.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/numth/coin-representable-two

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/numth/coin-representable-two \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"coin_a":4,"coin_b":7,"target":23}'
{
  "coin_a": 4,
  "coin_b": 7,
  "target": 23
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "numth.coin_representable_two",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Ver a documentação completa do KIT →