Partições em partes distintas
O número 5 se divide em partes distintas de 3 formas: 5, 4+1 e 3+2. Digite qualquer inteiro de 0 a 5000 e receba o número exato de partições em partes distintas, com quantos dígitos ele tiver. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- N
- 10
- Valor
- 10
- Quantidade
- 10
- Q
- 10
A função de partição em partes distintas q(n) responde a uma pergunta clássica da teoria dos números: de quantas formas você pode escrever um inteiro não negativo n como soma de inteiros positivos quando cada parcela aparece no máximo uma vez e a ordem não importa? Por exemplo, 5 é igual a 5, 4+1 e 3+2, de modo que q(5) vale três; 6 tem quatro partições em partes distintas e 10 tem dez. Essa contagem difere da função de partição irrestrita p(n), que permite partes repetidas como 2+2 ou 1+1+1. Partições em partes distintas aparecem em identidades de funções geradoras, no teorema de Euler que as equipara às de partes ímpares, em olimpíadas e em exercícios de programação dinâmica. Esta capacidade aceita um inteiro não negativo n e devolve o q(n) exato como string decimal calculada com programação dinâmica 0-1 em BigInt, de modo que valores além dos inteiros seguros permanecem corretos dígito a dígito. Um n negativo é rejeitado com erro de validação claro em vez de um zero silencioso ou uma resposta errada.
Como partições em partes distintas são definidas e contadas
Uma partição de um inteiro não negativo n em partes distintas é uma forma de escrever n como soma de inteiros positivos em que nenhuma parte se repete e a ordem das parcelas é irrelevante. Por convenção q(0) vale um, contando a partição vazia do zero. Valores clássicos de livro são q(1)=1 (a saber, 1), q(2)=1 (a saber, 2), q(3)=2 (3 e 2+1), q(4)=2 (4 e 3+1), q(5)=3 (5, 4+1, 3+2), q(6)=4 e q(10)=10.
A função geradora ordinária da sequência é o produto infinito sobre k maior ou igual a um de um mais x elevado a k, o que codifica que cada inteiro positivo pode aparecer zero vezes ou exatamente uma vez como parte.
Um algoritmo prático em software é o programa dinâmico clássico estilo mochila 0-1: inicialize um arranjo com uma forma de formar a soma zero e, para cada tamanho de parte de um até n, percorra o arranjo de somas restantes de n para baixo até esse tamanho e some as formas que excluem a parte às que a incluem. A ordem descendente garante que cada parte seja usada no máximo uma vez, de modo que o uso múltiplo irrestrito nunca ocorre.
Objetos relacionados mas diferentes incluem partições irrestritas p(n), em que partes podem se repetir; composições, em que a ordem importa; partições de conjuntos contadas por números de Stirling de segunda espécie; e partições só em partes ímpares, que Euler provou equinumeráveis às de partes distintas para todo n. Esta implementação não usa aproximação em ponto flutuante, amostragem Monte Carlo nem tabelas externas: preenche um arranjo unidimensional BigInt para que cada dígito seja correto.
O caminho é totalmente determinístico —sem sementes aleatórias, relógios, rede nem deriva de modelo—, de modo que o mesmo n sempre produz a mesma string.
Onde partições em partes distintas aparecem no trabalho real
Cursos de teoria dos números e competições de programação perguntam com frequência quantas partições de n usam parcelas pairwise distintas, como essa contagem se compara com p(n) irrestrita, ou se uma tabela de valores pequenos coincide com a identidade de Euler com partições em partes ímpares.
Projetistas de algoritmos usam contagens em partes distintas ao analisar espaços de estado estilo subset-sum 0-1, ao contar combinações de tamanhos de recurso únicos que totalizam um orçamento, ou ao dimensionar tabelas de DP cujas dimensões acompanham tamanhos de parte usados no máximo uma vez. Lições de combinatória e funções geradoras conectam q(n) ao produto de um mais x elevado a k e a identidades restritas tipo Rogers–Ramanujan; educadores costumam listar as partições distintas de um n pequeno e depois pedir só a contagem.
Preparação para entrevistas e olimpíadas frequentemente precisa de um q(n) confiável sem manter tabelas à mão nem contar por engano composições ou partições irrestritas. Se mais tarde você precisar de p(n) irrestrita, composições em que a ordem importa, partições de conjuntos via Stirling de segunda espécie, ou uma listagem explícita de cada partição em partes distintas em vez da contagem, trate-os como intenções de busca separadas em vez de sobrecarregar esta página.
Mantenha n dentro do limite documentado para que a latência do nível gratuito seja previsível, e prefira consumidores de string para o valor devolvido porque q(n) acaba saindo da faixa de inteiros seguros para argumentos grandes.
Casos de uso
Tarefas e competições de teoria dos números
Calcule q(n) exato para problemas de olimpíada, exercícios de matemática discreta e gabaritos automáticos que pedem partições em partes distintas.
Checagens de sala da identidade de Euler
Verifique valores clássicos como q(5)=3 e q(10)=10 ao ensinar funções geradoras ou ao comparar contagens de partes distintas e de partes ímpares.
Perguntas frequentes
O que é a função de partição em partes distintas q(n)?
q(n) conta as formas de escrever n como soma de inteiros positivos quando nenhuma parte se repete e a ordem não importa. Por exemplo q(5)=3 e q(10)=10.
Como isso difere das partições irrestritas p(n)?
A p(n) irrestrita permite partes repetidas (assim 2+2 conta para 4). Partições em partes distintas proíbem repetições, então 4 tem apenas duas: 4 e 3+1.
O que acontece se n for negativo?
Esta calculadora exige n ≥ 0; n negativo é rejeitado e não é cobrado.
Por que o valor é uma string e não um número?
Os números de partição em partes distintas ultrapassam os inteiros seguros do JavaScript para n grande. Strings decimais mantêm cada dígito exato.
Quantas partições em partes distintas o 5 tem?
São 3: o 5 sozinho, 4+1 e 3+2. Somas como 2+2+1 ou 1+1+3 não contam, porque nenhuma parte pode se repetir, e 4+1 e 1+4 são a mesma partição.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
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.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/numth/distinct-partitions \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":10}'const res = await fetch("https://api.kit.forhosting.com/numth/distinct-partitions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/distinct-partitions",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/distinct-partitions", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/distinct-partitions", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"n": 10
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.distinct_partitions",
"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.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A ferramenta gratuita do navegador e a API paga compartilham uma única função pura, assim demos de aula e pipelines automatizados nunca divergem para o mesmo n.
Como partições em partes distintas são definidas e contadas
Os limites declarados mantêm n entre zero e cinco mil inclusive, o que mantém a latência do pior caso adequada a uma ferramenta gratuita no navegador e a um Worker leve, cobrindo ainda necessidades de concurso, sala de aula e pipelines de contagens exatas em partes distintas.
O que você envia e o que recebe de volta
O inteiro n deve estar entre zero e cinco mil inclusive. As mensagens de erro nomeiam o campo ofensor e a regra que falhou para que clientes de formulário e scripts corrijam a entrada sem adivinhar. Em caso de sucesso a resposta sempre inclui o n normalizado, value e count e q como a mesma string decimal exata de q(n), e uma fórmula curta como q(5) para exibição. Forneça um inteiro n obrigatório no campo n (aliases number, value ou N). Campos ausentes, não inteiros, decimais e qualquer n negativo são rejeitados com invalid_input e não são cobrados. Verificações de exemplo: n igual a cinco dá contagem três; n igual a dez dá contagem dez; n igual a zero dá contagem um; n igual a seis dá contagem quatro; n igual a três dá contagem dois; n igual a menos três dá invalid_input porque a função de partes distintas não está definida para argumentos negativos nesta regra de produto; n igual a um decimal ou a uma string não numérica também dá invalid_input. O contrato é JSON estável, adequado a testes unitários, demos de aula e pipelines em lote. O preço das chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação não consomem saldo pré-pago.
Onde partições em partes distintas aparecem no trabalho real
Como esta capacidade é um motor parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo.
Casos de integração
Análise de mochila 0-1 e subset-sum
Valide fixtures de contagem em partes distintas dentro de pipelines de DP inteira que usam cada tamanho de parte no máximo uma vez, sem tabelas em ponto flutuante.
Perguntas técnicas
Como a API cobra o cálculo de q(n)?
O contador de partições em partes distintas no navegador é gratuito e roda no seu dispositivo. Na API, cada item bem-sucedido debita o monedero KIT pré-pago recarregável em US$ 0,002; entradas rejeitadas não geram débito.