Oliver Eyton-Williams ee1e8abd87
feat(curriculum): restore seed + solution to Chinese (#40683)
* feat(tools): add seed/solution restore script

* chore(curriculum): remove empty sections' markers

* chore(curriculum): add seed + solution to Chinese

* chore: remove old formatter

* fix: update getChallenges

parse translated challenges separately, without reference to the source

* chore(curriculum): add dashedName to English

* chore(curriculum): add dashedName to Chinese

* refactor: remove unused challenge property 'name'

* fix: relax dashedName requirement

* fix: stray tag

Remove stray `pre` tag from challenge file.

Signed-off-by: nhcarrigan <nhcarrigan@gmail.com>

Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
2021-01-12 19:31:00 -07:00

1.6 KiB
Raw Blame History

id, title, challengeType, videoUrl, dashedName
id title challengeType videoUrl dashedName
5900f3a11000cf542c50feb4 问题53组合选择 5 problem-53-combinatoric-selections

--description--

有十种方法从五种中选择三种12345123,124,125,134,135,145,234,235,245和345在组合学中我们使用符号5C3 = 10.一般来说,

nCr = nrn-r 其中r≤nn = n×n-1×...×3×2×1和0 = 1。

直到n = 23一个值超过一百万23C10 = 1144066.对于1≤n≤100nCr的多少不一定是不同的值大于一百万

--hints--

combinatoricSelections(1000)应返回4626。

assert.strictEqual(combinatoricSelections(1000), 4626);

combinatoricSelections(10000)应该返回4431。

assert.strictEqual(combinatoricSelections(10000), 4431);

combinatoricSelections(100000)应返回4255。

assert.strictEqual(combinatoricSelections(100000), 4255);

combinatoricSelections(1000000)应该返回4075。

assert.strictEqual(combinatoricSelections(1000000), 4075);

--seed--

--seed-contents--

function combinatoricSelections(limit) {

  return 1;
}

combinatoricSelections(1000000);

--solutions--

function combinatoricSelections(limit) {
    const factorial = n =>
        Array.apply(null, { length: n })
            .map((_, i) => i + 1)
            .reduce((p, c) => p * c, 1);

    let result = 0;
    const nMax = 100;

    for (let n = 1; n <= nMax; n++) {
        for (let r = 0; r <= n; r++) {
            if (factorial(n) / (factorial(r) * factorial(n - r)) >= limit)
                result++;
        }
    }

    return result;
}