整数の順序付き分割の個数
5は16通りの順序付きの和で表せます。合成の個数は常に2^(n-1)だからです。nは10000まで入力でき、何千桁にもなる個数も正確に表示します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- N
- 5
- 数量
- 16
正の整数nの順序付き合成とは、和がnになる正の整数の組であり、部分の順番そのものが同一性に含まれます。1+3と3+1は四に対する別々の合成です。古典的な組合せ論は、そのような順序付き和の個数が常に2の(nマイナス1)乗であることを示します。本機能は正の整数nを一つ受け取り、その厳密な個数と閉じた公式2^(n-1)を返すため、すべての組を列挙したり、区切りの二分木を辿ったり、宿題・競技用例・母関数の恒等式を確認する際に一つずれを起こしたりする必要がありません。
順序付き合成の個数が2の(nマイナス1)乗である理由
n個の1を一列に書いてください。その1のあいだにはちょうどnマイナス1個のすき間があります。各すき間について、列を新しい部分へ割る棒を入れるか、隣接する1が大きな部分としてつながったままになるようすき間を空のままにするかを選べます。
棒と空きすき間のあらゆる配置がnの順序付き合成を一つ生み、あらゆる合成はちょうど一つのそのような配置から得られます。nマイナス1個のすき間のそれぞれに独立した二通りの選択があるため、配置の総数は2の(nマイナス1)乗です。この恒等式こそ本機能が評価するアルゴリズムのすべてであり、先頭部分の枝を再帰せず、組の配列を確保せず、標本抽出しません。
nが四のときの一行確認は八であり、(4)、(1,3)、(3,1)、(2,2)、(1,1,2)、(1,2,1)、(2,1,1)、(1,1,1,1)の八つの合成と一致します。nが一のときは棒のない配置が一つだけで個数は一、合成(1)そのものです。
閉じた形は任意の正の整数で厳密なので、四の合成が九個だと主張する答案は単に誤りであり、合成族の大きさが必要な生成器はこの個数からバッファを見積もれ、列挙する必要はありません。順序は本質です。 1+3と3+1を同一視したなら合成を離れ、分割の世界に入っています。その個数p(n)にこのような2の累乗公式はなく、検索意図も異なります。
送る内容、返る内容、および要求が失敗するとき
製品規則は厳格です。 一未満のnは無効であり、零もすべての負数も含まれます。通常の合成の定義は合成すべき正の整数を要求するからです。公開上限を超える値も失敗し、数千桁の2の累乗がWorkerやブラウザを止めないようにします。
成功時、応答は正規化したnを返し、厳密値2^(n-1)の十進文字列としてcountを返し、クライアントが定理を埋め込みせずに表示できるよう恒等式文字列2^(n-1)としてformulaを含めます。個数を文字列にするのは意図的です。
2の五十三乗はすでにJavaScriptの安全整数範囲を離れ、すべての合成を列挙するのが絶望的なほどnが大きいときにこそ本ページは役立ちます。検証失敗は課金されません。
合成の個数が適する場面と料金の仕組み
組が何かではなく、順序付き和が何個存在するかを問うときにこの個数を使ってください。競技プログラマーは合成の個数問題の候補解を、各言語のハーネスでBigIntの累乗を再実装する代わりに決定的な神託と突き合わせます。教員はすき間と棒の証明を課し、学生が列挙を試みる前に2^(n-1)が本当に族の大きさであることを機械で確認する必要があります。
面接用サンドボックスと母関数の演示は、尋ねるたびに同じ数が必要です。データやコンパイラの作業では、予算nの順序付き段階分割の探索空間を見積もり、確保の前に濃度を知る必要があります。本当にすべての組が必要ならここで止め、小さなn向けの列挙ツールを使ってください。
ちょうどk個の部分への合成が必要なら、それは二項係数C(n-1, k-1)であり別ページです。順序が問題にならないなら分割関数p(n)が必要です。nを文書化された範囲内に保ち、文字列countを厳密な整数として扱えば、計算機代数系を入れなくても再現可能な合成個数が得られます。
活用例
恒等式2^(n-1)の宿題確認
生徒に正のnを与え、すべての組を列挙する前に手で数えた合成が閉じた形と一致するかを確認します。
競技と面接の検証器
合成の個数問題の候補解を、各ハーネスで2の累乗を再実装する代わりに厳密なBigInt個数と突き合わせます。
順序付き分割の探索空間の見積り
バッファを確保したり列挙器を起動したりする前に、予算nの順序付き段階分割が何通りあるかを把握します。
よくある質問
整数の合成個数は何を返しますか?
正の整数nに対し、nの順序付き合成の厳密な個数を十進文字列で返し、公式2^(n-1)を添えます。組そのものは列挙しません。
公式が2の(nマイナス1)乗であり2^nでないのはなぜですか?
1がn個並び、そのあいだのすき間はn−1個だけです。各すき間は棒を置くか否かの二択なので、個数は2^(n−1)であり2^nではありません。
すべての合成を列挙しますか?
いいえ。 本ページは合成が何個存在するかに答えます。順序付きの組をすべて列挙するのは別の作業で、小さなnでのみ現実的です。
5の合成はいくつありますか?
16通りです。5個の1の間には4つのすき間があり、それぞれに区切りを入れるか入れないかの2通りなので、2^4 = 16になります。
1+3と3+1は同じものとして数えますか?
いいえ、別々に数えます。順序を区別するのが合成で、順序を区別しない場合は分割という別の数え方になり、2^(n-1)のような公式はありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
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)リクエスト例
{
"n": 5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.compositions_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
min_n | 1 |
max_n | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
同じ純粋関数が無料のブラウザツールとAPI経路の両方で動きます。1未満のnはinvalid_inputで拒否され、課金されません。
送る内容、返る内容、および要求が失敗するとき
数えたい順序付き合成の対象である必須の正の整数nを含むJSONボディをPOSTしてください。同じ欄の別名としてinteger、value、Nを受け付けます。nは一から一万までの整数でなければならず、数字だけの数値文字列は受け付けますが、分数・真偽値・空文字列・欠落欄はnを名指ししてinvalid_inputで失敗します。テストに固定できる典型確認:nが一ならcountは1、nが五ならcountは16、nが十ならcountは512、nが零ならinvalid_inputです。
合成の個数が適する場面と料金の仕組み
API利用は成功した項目ごとに公開基本料金$0.002で前払いKIT残高から引きます。invalid_inputは残高を消費しません。
技術的な質問
どのnが受け付けられますか。
1から10000までの整数です。零、負数、分数、nの欠落、上限超過はinvalid_inputで失敗し、課金されません。
合成個数の料金はどうなりますか。
ブラウザツールは無料で手元で動きます。API要求は成功した項目ごとに$0.002で前払いKIT残高を使い、不正な入力は課金されません。