整数の合成計算機
整数を正の数の和に分ける順序つきの方法を数えます。5なら16通り、4なら8通りで、1+3と3+1は別々に数えます。部分の個数kを指定して絞り込むこともできます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 合成する正の整数
- 5
- 数量
- 16
整数nの合成(コンポジション)とは、nを正の整数の和として順序付きで書き表す方法です。分割とは異なり順序が意味を持ち、1+3と3+1は四の異なる合成です。古典的な組合せ論により、任意の正のnについて合成の総数はちょうど2の(n−1)乗であり、ちょうどk個の部分からなる合成はちょうどC(n−1, k−1)個であることが示されます。本機能はこれらの公式をBigInt演算で評価し、大きな個数を浮動小数点や安全整数の上限を超えても十進文字列として厳密に保ちます。
合成とは何か、二つの公式の仕組み
n個の1を一列に並べ、その間のn−1個のすき間のそれぞれについて、区切りを入れるかどうかを決めます。区切りのあらゆる配置は、合計がnとなる正の部分の一意な順序付き和を生み、あらゆる合成はこの仕方で得られます—したがって合成の総数は2の(n−1)乗です。
ちょうどk個の部分を求めるときは、そのn−1個のすき間からちょうどk−1個を選んで区切りを置く必要があり、これが二項係数C(n−1, k−1)です。小さな確認:nが四のとき合成は(4)、(1,3)、(3,1)、(2,2)、(1,1,2)、(1,2,1)、(2,1,1)、(1,1,1,1)の八つで、2の3乗と一致します。
五をちょうど三部分に:C(4,2)は六です。本ツールはJavaScript BigIntで乗除を行い、中間結果をすべて厳密に保ち、最終個数を十進文字列として返し、決して丸めません。
実践的なコツ、制限、関連する意図
最悪ケースのべき乗と二項係数がWorkerとブラウザで素早く終わるよう、nは最大一万に抑えてください。それでも安全なNumber範囲をはるかに超えるコンテストや授業の規模をカバーします。
教えるときは対になる例を優先します:nが四なら総合成は八;nが五でkが三なら六;nが五でkが一なら一(nそのものの一部分);nが五でkが五なら一(すべて1);nが零はnが1未満の硬拒否経路を示し;kがnより大きい場合はk範囲外経路を示します。
姉妹ページは組合せ(nCr)、多項係数、順序のない分割を扱うことがありますが、本ページは整数の合成計算機、正の部分への順序付き分割、nをk部分へ合成する個数を探す方向けです。合成と分割を混同しないでください:順序が問題にならないなら分割関数p(n)が必要で、意図もランディングも異なります。
活用例
プログラミングコンテストと面接準備の検証器
合成個数問題の候補解を、言語ごとのハーネスでBigIntのべき乗や二項係数を再実装せずに検証します。
星と棒・順序付き和の授業
nの合成が2^(n-1)、ちょうどk部分がC(n-1,k-1)であることを、母関数や再帰の導入時に厳密な個数をライブで示します。
よくある質問
整数の合成とは何ですか?
nの合成とは、和がnになる正の整数の順序付きタプルです。順序が重要で、(1,3)と(3,1)は4の異なる合成です。
正の整数nにはいくつの合成がありますか?
合計ちょうど2^(n−1)個の合成があります。ちょうどk部分への合成はC(n−1, k−1)個です。
なぜ個数は文字列で返されますか?
大きな2のべきと二項係数はJavaScriptの安全整数を超えます。十進文字列なら、対応するすべてのnで厳密値を精度損失なく保てます。
nが1未満、またはkがnより大きいとどうなりますか?
本計算機はn ≥ 1を要求し、kがあるときは1 ≤ k ≤ nを要求します。
5をちょうど3つの部分に分ける合成はいくつありますか?
6通りです。数に5、部分の個数に3を入力すると、C(4,2)として求められます。5つの1の間にある4か所のすき間から、プラス記号を置く2か所を選ぶ数だからです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/combo/compositions \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5}'const res = await fetch("https://api.kit.forhosting.com/combo/compositions", {
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/combo/compositions",
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/combo/compositions", 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/combo/compositions", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "combo.compositions",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_n | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
学生・教員・競技プログラマー・データエンジニアは、計算機代数のインストールも乱択サンプリングも不要で、無料のブラウザツールと前払いAPI経路で同一の純粋関数による決定的なJSON結果を得られ、宿題の照合・パイプライン検証・面接用サンドボックスが、順序のない分割や単なる二項係数nCrではなく合成の個数を必要とする場面で、再現可能な同一の答えを共有できます。
合成とは何か、二つの公式の仕組み
境界条件は意図的です:nは少なくとも1(0と負はinvalid_inputであり、無料の拡張ではありません)、kがあるときは1からnまで、kを省略すると総数を返します。この契約は標準的な組合せ論の教科書やプログラミングコンテストのジャッジと一致するため、小さなnでは手作業の列挙、大きなnでは既知の表と照合しても、浮動小数点のずれや無言のラップアラウンドなく信頼できます。
APIの呼び出し方とレスポンスの読み方
別名total、N、integerも同じ意味で受け付けます。kが省略または空のとき、サービスは合成の総数2の(n−1)乗を返します。kが設定されているときはC(n−1, k−1)を返し、1 ≤ k ≤ nが必要です。宿題採点、コンテスト検証、面接準備サンドボックス、母関数のデモ、パイプラインの各マシンに多倍長パッケージを入れずに再現可能な合成個数が必要なあらゆるワークフローからご利用ください。必須の正の整数n—合成したい整数—を1から一万まで含むJSONボディを送ってください。任意フィールドkは部分の正確な個数で、別名parts、num_parts、Kはkに対応します。成功レスポンスには、数値としてのn、総数モードではnullになり得る数値またはnullのk、厳密値の十進文字列count、クライアントがハードコードせずに表示・記録できる式文字列2^(n-1)またはC(n-1,k-1)としてのformulaが含まれます。検証失敗—n欠落、nが1未満、非整数、分数、公開上限超過、kがnより大きい—はinvalid_inputを返し、課金されません。料金は成功したリクエスト1件あたり定額の$0.002で、ユニット項目・限界単価ゼロです。
実践的なコツ、制限、関連する意図
数十万規模のnで多倍長が必要な場合は、オフラインの専用大きな整数スタックを使ってください—この軽量parse機能は対話的な確認、APIの糊付け、教室デモ向けです。両公式とも決定的なので、学生は小さなケースを列挙や表計算で再計算し、APIと行ごとに照合できます。invalid_inputを返す失敗タスクは前払い残高を消費しないため、契約を学びながら誤入力しても探索スクリプトを安く保てます。大きな2のべきがJSON輸送で下位桁を失わないよう、JavaScript Numberへの強制より厳密な文字列個数を優先してください。
連携の活用例
合成に関する宿題・試験の採点
学生にn(と任意のk)を与え、手計算の合成個数を決定的なAPIまたは無料ブラウザ結果と照合し、浮動小数点の曖昧さを避けます。
技術的な質問
整数の合成計算機は無料ですか?
ブラウザツールは無料でローカル実行されます。API呼び出しは成功リクエストあたり$0.002の前払いKIT残高を使い、失敗タスクは課金されません。