Recuento de composiciones enteras
El número 5 admite 16 sumas ordenadas distintas, porque las composiciones de n son siempre 2^(n-1). Escriba un n de hasta 10000 y obtenga el recuento exacto, aunque tenga miles de cifras. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- N
- 5
- Cantidad
- 16
Una composición ordenada de un entero positivo n es una tupla de enteros positivos que suman n, en la que el orden de las partes forma parte de la identidad: 1+3 y 3+1 son dos composiciones distintas de cuatro. La combinatoria clásica demuestra que el número de tales sumas ordenadas es siempre dos elevado a n menos uno. Esta capacidad acepta un único entero positivo n y devuelve ese recuento exacto, junto con la fórmula cerrada 2^(n-1), de modo que usted no tenga que enumerar cada tupla, recorrer un árbol binario de separadores ni arriesgarse a un error por uno al revisar tareas, casos de concurso o identidades de funciones generadoras.
Por qué el número de composiciones ordenadas es dos elevado a n menos uno
Escriba n unos en una fila. Entre esos unos hay exactamente n menos uno huecos. En cada hueco usted puede insertar una barra que parte la secuencia en una nueva parte, o dejar el hueco vacío para que los unos adyacentes queden pegados como una parte mayor.
Cada patrón de barras y huecos vacíos produce una composición ordenada de n, y toda composición surge de exactamente un patrón de ese tipo. Como cada uno de los n menos uno huecos tiene dos elecciones independientes, el número total de patrones es dos elevado a n menos uno. Esa identidad es todo el algoritmo que evalúa esta capacidad: no recorre ramas de primera parte, no reserva un arreglo de tuplas y no muestrea.
Una comprobación de una línea para n igual a cuatro da ocho, coincidiendo con las ocho composiciones (4), (1,3), (3,1), (2,2), (1,1,2), (1,2,1), (2,1,1) y (1,1,1,1). Para n igual a uno hay un único patrón sin barras y el recuento es uno, la composición (1) misma. La forma cerrada es exacta para todo entero positivo, de modo que un trabajo que afirme nueve composiciones de cuatro está simplemente equivocado, y un generador que necesite el tamaño de la familia de composiciones puede dimensionar buffers con este recuento sin listarlas nunca.
El orden es esencial: si identifica 1+3 con 3+1 ha abandonado las composiciones y ha entrado en el mundo de las particiones, cuyo recuento p(n) no tiene esa fórmula de potencia de dos y es una intención de búsqueda distinta.
Qué envía, qué recibe y cuándo falla la solicitud
La regla de producto es estricta: n menor que uno es inválido, incluido el cero y todo negativo, porque la definición habitual de composición exige un entero positivo que componer. Si tiene éxito, la respuesta repite el n normalizado, devuelve count como cadena decimal del valor exacto 2^(n-1) e incluye formula como la cadena de identidad 2^(n-1) para que los clientes muestren el teorema sin codificarlo a mano.
El recuento es una cadena a propósito: dos elevado a cincuenta y tres ya abandona el rango de enteros seguros de JavaScript, y esta página es útil precisamente cuando n es tan grande que listar cada composición resulta imposible. La validación fallida no se cobra.
Dónde encaja un recuento de composiciones y cómo se tarifa
Use este recuento cuando la pregunta sea cuántas sumas ordenadas existen, no cuáles son las tuplas. Los programadores de concursos confrontan soluciones candidatas de problemas de conteo de composiciones con un oráculo determinista en lugar de reimplementar una potencia BigInt en cada arnés de lenguaje. El profesorado asigna la demostración de huecos y barras y necesita una comprobación automática de que 2^(n-1) es de verdad el tamaño de la familia antes de que el alumnado intente listarla.
Los sandboxes de entrevistas y las demostraciones de funciones generadoras necesitan el mismo número cada vez que preguntan. El trabajo de datos y de compiladores a veces dimensiona un espacio de búsqueda de divisiones por etapas ordenadas de un presupuesto n y debe conocer la cardinalidad antes de reservar memoria.
Si de verdad necesita cada tupla, deténgase aquí y use una herramienta de listado con un n pequeño; si necesita composiciones en exactamente k partes, eso es el binomial C(n-1, k-1) y otra página; si el orden no importa, usted quiere la función de partición p(n). Mantenga n dentro de los límites documentados, trate la cadena count como el entero exacto y obtendrá un recuento de composiciones reproducible sin instalar un sistema de álgebra computacional.
Qué puede hacer con ella
Comprobación escolar de la identidad 2^(n-1)
Asigne al alumnado un n positivo y verifique que sus composiciones contadas a mano coinciden con la forma cerrada antes de listar cada tupla.
Validadores de concursos y entrevistas
Contraste soluciones candidatas de problemas de conteo de composiciones con un recuento BigInt exacto en lugar de reimplementar una potencia de dos en cada arnés.
Dimensionar el espacio de divisiones ordenadas
Averigüe cuántas divisiones por etapas ordenadas de un presupuesto n existen antes de reservar buffers o lanzar un enumerador.
Preguntas frecuentes
¿Qué devuelve el recuento de composiciones enteras?
Para un entero positivo n devuelve el número exacto de composiciones ordenadas de n como cadena decimal, más la fórmula 2^(n-1). No lista las tuplas.
¿Por qué la fórmula es dos elevado a n menos uno y no 2^n?
Hay n unos en fila y solo n−1 huecos entre ellos. Cada hueco es una elección binaria (barra o no barra), así que el recuento es 2^(n−1), no 2^n.
¿Enumera esta página cada composición?
No. Esta página responde cuántas composiciones existen. Listar cada tupla ordenada es otra tarea y solo resulta práctico para un n pequeño.
¿Cómo se tarifa el recuento de composiciones?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Cuántas composiciones tiene el número 5?
Tiene 16. Entre cinco unos hay 4 huecos y en cada uno puede poner un corte o no: son 2 opciones por hueco, así que 2^4 = 16 sumas ordenadas.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/numth/compositions-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5}'const res = await fetch("https://api.kit.forhosting.com/numth/compositions-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/compositions-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/compositions-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/compositions-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"n": 5
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.compositions_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
min_n | 1 |
max_n | 10000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La misma función pura se ejecuta en la herramienta gratuita del navegador y en la ruta de API. Los valores de n menores que uno se rechazan con invalid_input y nunca se facturan.
Qué envía, qué recibe y cuándo falla la solicitud
Envíe por POST un cuerpo JSON con el entero positivo obligatorio n, el entero cuyas composiciones ordenadas desea contar. Se aceptan los alias integer, value y N para el mismo campo. n debe ser un número entero de uno a diez mil; se admiten cadenas numéricas de dígitos, mientras que fracciones, booleanos, cadenas vacías y campos ausentes fallan con invalid_input nombrando n. Los valores por encima del máximo publicado también fallan para que una potencia de dos de miles de dígitos no detenga el Worker ni el navegador. Comprobaciones típicas que puede fijar en pruebas: n igual a uno da count 1; n igual a cinco da count 16; n igual a diez da count 512; n igual a cero es invalid_input.
Dónde encaja un recuento de composiciones y cómo se tarifa
El uso de la API se descuenta del saldo prepago KIT al precio base publicado $0.002 por ítem exitoso; invalid_input no consume saldo.
Preguntas técnicas
¿Qué valores de n se aceptan?
Enteros de 1 a 10000. El cero, los negativos, las fracciones, n ausente y los valores por encima del máximo fallan con invalid_input y no se cobran.