ForHosting KIT · Matemática

Contagem de composições inteiras

O número 5 tem 16 somas ordenadas diferentes, porque as composições de n são sempre 2^(n-1). Digite um n de até 10000 e receba a contagem exata, mesmo com milhares de dígitos. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
N
5
Você obtém
Quantidade
16

Uma composição ordenada de um inteiro positivo n é uma tupla de inteiros positivos que somam n, em que a ordem das partes faz parte da identidade: 1+3 e 3+1 são duas composições distintas de quatro. A combinatória clássica prova que o número dessas somas ordenadas é sempre dois elevado a n menos um. Esta capacidade aceita um único inteiro positivo n e devolve essa contagem exata, junto com a fórmula fechada 2^(n-1), para que você não precise enumerar cada tupla, percorrer uma árvore binária de separadores nem arriscar um erro de um ao conferir lições, casos de competição ou identidades de funções geradoras.

Por que o número de composições ordenadas é dois elevado a n menos um

Escreva n uns em uma fileira. Entre esses uns existem exatamente n menos um vãos. Em cada vão você pode inserir uma barra que parte a sequência em uma nova parte, ou deixar o vão vazio para que os uns adjacentes fiquem colados como uma parte maior.

Cada padrão de barras e vãos vazios produz uma composição ordenada de n, e toda composição nasce de exatamente um padrão desses. Como cada um dos n menos um vãos tem duas escolhas independentes, o número total de padrões é dois elevado a n menos um. Essa identidade é todo o algoritmo que esta capacidade avalia: ela não percorre ramos de primeira parte, não aloca um array de tuplas e não amostra.

Uma checagem de uma linha para n igual a quatro dá oito, coincidindo com as oito composições (4), (1,3), (3,1), (2,2), (1,1,2), (1,2,1), (2,1,1) e (1,1,1,1). Para n igual a um há um único padrão sem barras e a contagem é um, a própria composição (1). A forma fechada é exata para todo inteiro positivo, de modo que um trabalho que afirme nove composições de quatro está simplesmente errado, e um gerador que precise do tamanho da família de composições pode dimensionar buffers com esta contagem sem nunca listá-las.

A ordem é essencial: se você identifica 1+3 com 3+1, saiu das composições e entrou no mundo das partições, cuja contagem p(n) não tem essa fórmula de potência de dois e é uma intenção de busca diferente.

O que você envia, o que recebe de volta e quando a requisição falha

A regra de produto é rígida: n abaixo de um é inválido, inclusive zero e todo negativo, porque a definição usual de composição exige um inteiro positivo a compor. Em caso de sucesso, a resposta ecoa o n normalizado, devolve count como string decimal do valor exato 2^(n-1) e inclui formula como a string de identidade 2^(n-1) para que os clientes mostrem o teorema sem codificá-lo à mão.

A contagem é uma string de propósito: dois elevado a cinquenta e três já deixa o intervalo de inteiros seguros do JavaScript, e esta página é útil justamente quando n é grande o bastante para que listar cada composição seja inviável. Validação falha não é cobrada.

Onde uma contagem de composições se encaixa e como é cobrada

Use esta contagem quando a pergunta for quantas somas ordenadas existem, não quais são as tuplas. Programadores de competição confrontam soluções candidatas de problemas de contagem de composições com um oráculo determinístico em vez de reimplementar uma potência BigInt em cada harness de linguagem. Professores passam a prova dos vãos e barras e precisam de uma checagem automática de que 2^(n-1) é de fato o tamanho da família antes de os alunos tentarem listá-la.

Sandboxes de entrevista e demos de funções geradoras precisam do mesmo número sempre que perguntam. Trabalho de dados e de compiladores às vezes dimensiona um espaço de busca de divisões por etapas ordenadas de um orçamento n e precisa conhecer a cardinalidade antes de alocar.

Se você realmente precisa de cada tupla, pare aqui e use uma ferramenta de listagem com um n pequeno; se precisa de composições em exatamente k partes, isso é o binomial C(n-1, k-1) e outra página; se a ordem não importa, você quer a função de partição p(n). Mantenha n dentro dos limites documentados, trate a string count como o inteiro exato e você obtém uma contagem de composições reproduzível sem instalar um sistema de álgebra computacional.

Checagem escolar da identidade 2^(n-1)

Dê aos alunos um n positivo e verifique que as composições contadas à mão batem com a forma fechada antes de listar cada tupla.

Validadores de competição e entrevista

Confrontar soluções candidatas de problemas de contagem de composições com uma contagem BigInt exata em vez de reimplementar uma potência de dois em cada harness.

Dimensionar o espaço de divisões ordenadas

Saiba quantas divisões por etapas ordenadas de um orçamento n existem antes de alocar buffers ou lançar um enumerador.

O que a contagem de composições inteiras devolve?

Para um inteiro positivo n, devolve o número exato de composições ordenadas de n como string decimal, mais a fórmula 2^(n-1). Não lista as tuplas.

Por que a fórmula é dois elevado a n menos um e não 2^n?

Há n uns em fila e apenas n−1 vãos entre eles. Cada vão é uma escolha binária (barra ou sem barra), então a contagem é 2^(n−1), não 2^n.

Esta página enumera cada composição?

Não. Esta página responde quantas composições existem. Listar cada tupla ordenada é outra tarefa e só é prático para n pequeno.

Como a contagem de composições é cobrada?

A ferramenta do navegador é gratuita e roda localmente.

Quantas composições o número 5 tem?

São 16. Entre cinco uns existem 4 espaços, e em cada um você coloca um corte ou não: são 2 escolhas por espaço, logo 2^4 = 16 somas ordenadas.

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/compositions-count

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/compositions-count \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"n":5}'
{
  "n": 5
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "numth.compositions_count",
  "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.

min_n1
max_n10000
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.

A mesma função pura roda na ferramenta gratuita do navegador e no caminho de API. Valores de n abaixo de um são rejeitados com invalid_input e nunca são cobrados.

O que você envia, o que recebe de volta e quando a requisição falha

Envie por POST um corpo JSON com o inteiro positivo obrigatório n, o inteiro cujas composições ordenadas você quer contar. Os aliases integer, value e N são aceitos para o mesmo campo. n deve ser um número inteiro de um a dez mil; strings numéricas de dígitos são aceitas, enquanto frações, booleanos, strings vazias e campos ausentes falham com invalid_input nomeando n. Valores acima do máximo publicado também falham para que uma potência de dois com milhares de dígitos não trave o Worker nem o navegador. Checagens típicas que você pode fixar em testes: n igual a um produz count 1; n igual a cinco produz count 16; n igual a dez produz count 512; n igual a zero é invalid_input.

Onde uma contagem de composições se encaixa e como é cobrada

O uso da API consome saldo pré-pago KIT ao preço-base publicado US$ 0,002 por item bem-sucedido; invalid_input não consome saldo.

Quais valores de n são aceitos?

Inteiros de 1 a 10000. Zero, negativos, frações, n ausente e valores acima do máximo falham com invalid_input e não são cobrados.

Ver a documentação completa do KIT →