Files
freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-100-arranged-probability.md
2022-01-20 20:30:18 +01:00

88 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 5900f3d01000cf542c50fee3
title: '問題 100: 調整された確率'
challengeType: 5
forumTopicId: 301724
dashedName: problem-100-arranged-probability
---
# --description--
箱の中に、15 枚の青い円盤と 6 枚の赤い円盤、計 21 枚の色付き円盤が入っています。2 枚の円盤を無作為に取り出したときにそれが青い円盤 2 枚である確率は、次のように求めることができます。
$${P(BB)} = \frac{15}{21}×\frac{14}{20} = \frac{1}{2}$$
無作為に取り出した 2 枚が青い円盤である確率がちょうど 50% になるように調整した場合、枚数が次に多いのは、85 枚の青い円盤と 35 枚の赤い円盤が入った箱です。
合計枚数が `limit` より多くなる最初の調整方法を見つけ、その箱に入っている青い円盤の枚数を求めなさい。
# --hints--
`arrangedProbability(20)` は数値を返す必要があります。
```js
assert(typeof arrangedProbability(10) === 'number');
```
`arrangedProbability(20)``15` を返す必要があります。
```js
assert.strictEqual(arrangedProbability(20), 15);
```
`arrangedProbability(100)``85` を返す必要があります。
```js
assert.strictEqual(arrangedProbability(100), 85);
```
`arrangedProbability(100000)``97513` を返す必要があります。
```js
assert.strictEqual(arrangedProbability(100000), 97513);
```
`arrangedProbability(1000000000)``3822685023` を返す必要があります。
```js
assert.strictEqual(arrangedProbability(1000000000), 3822685023);
```
`arrangedProbability(1000000000000)``756872327473` を返す必要があります。
```js
assert.strictEqual(arrangedProbability(1000000000000), 756872327473);
```
# --seed--
## --seed-contents--
```js
function arrangedProbability(limit) {
return true;
}
arrangedProbability(20);
```
# --solutions--
```js
function arrangedProbability(limit) {
// Based on https://www.mathblog.dk/project-euler-100-blue-discs-two-blue/
let blue = 15;
let discs = 21;
while (discs < limit) {
const nextBlue = 3 * blue + 2 * discs - 2;
const nextDiscs = 4 * blue + 3 * discs - 3;
blue = nextBlue;
discs = nextDiscs;
}
return blue;
}
```