63 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 5900f4b31000cf542c50ffc6
 | |
| title: '問題 327: 運命の部屋'
 | |
| challengeType: 5
 | |
| forumTopicId: 301984
 | |
| dashedName: problem-327-rooms-of-doom
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| 連続する 3 つの部屋が自動ドアでつながっています。
 | |
| 
 | |
| <img class="img-responsive center-block" alt="自動ドアでつながった連続する 3 部屋" src="https://cdn.freecodecamp.org/curriculum/project-euler/rooms-of-doom.gif" style="background-color: white; padding: 10px;" />
 | |
| 
 | |
| 各ドアを開けるにはセキュリティカードを使います。 部屋に入るとドアが自動的に閉まり、そのセキュリティカードは二度と使えません。 開始時、カード発行機から何枚でもカードを入手できますが、各部屋 (開始点となる部屋を含む) には検出器が設置されています。 あなたが 3 枚以上のセキュリティカードを持っていることや、セキュリティカードが床に放置されていることが検出されると、すべてのドアが永久にロックされます。 ただし、各部屋には箱があり、後で使うための任意の枚数のセキュリティカードをその箱に安全に保管できます。
 | |
| 
 | |
| 単に部屋を一度に通り抜けようとすると、3 つ目の部屋に入った時には 3 枚のカードを使い切っているので、永久にその部屋に閉じ込められます!
 | |
| 
 | |
| しかし、保管箱を使えば 脱出できる可能性があります。 例えば、1 枚目のカードを使って 1 つ目の部屋に入り、保管箱にカードを 1 枚入れ、3 枚目のカードを使って開始地点に戻ります。 その後、さらに 3 枚のカードを発行機から入手し、1 枚を使って 1 つ目の部屋に入り、先ほど箱に入れたカードを取り出します。 再び 3 枚のカードを持っているので、残りの 3 つのドアを通過することができます。 この方法なら、計 6 枚のセキュリティカードを使って 3 つの部屋を通り抜けられます。
 | |
| 
 | |
| 一度に最大 3 枚のカードを持ち、計 123 枚のセキュリティカードを使って 6 つの部屋を通り抜けることができます。
 | |
| 
 | |
| どの時点であれ一度に持つことができるカードの最大枚数を、$C$ とします。
 | |
| 
 | |
| 通り抜ける部屋の数を $R$ とします。
 | |
| 
 | |
| どの時点であれ一度に最大 $C$ 枚のカードを持ち、$R$ 個の部屋を通り抜けるために発行機から入手する必要のあるカードの最小枚数を $M(C, R)$ とします。
 | |
| 
 | |
| 例えば、$M(3, 6) = 123$, $M(4, 6) = 23$ です。
 | |
| 
 | |
| また、$3 ≤ C ≤ 4$ のとき、$\sum M(C, 6) = 146$ です。
 | |
| 
 | |
| $3 ≤ C ≤ 10$ のとき、$\sum M(C, 10) = 10382$ が与えられます。
 | |
| 
 | |
| $3 ≤ C ≤ 40$ のとき、$\sum M(C, 30)$ を求めなさい。
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| `roomsOfDoom()` は `34315549139516` を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(roomsOfDoom(), 34315549139516);
 | |
| ```
 | |
| 
 | |
| # --seed--
 | |
| 
 | |
| ## --seed-contents--
 | |
| 
 | |
| ```js
 | |
| function roomsOfDoom() {
 | |
| 
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| roomsOfDoom();
 | |
| ```
 | |
| 
 | |
| # --solutions--
 | |
| 
 | |
| ```js
 | |
| // solution required
 | |
| ```
 |