78 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								id: 5900f3941000cf542c50fea7
							 | 
						|||
| 
								 | 
							
								title: 'Problem 40: Champernowne''s constant'
							 | 
						|||
| 
								 | 
							
								challengeType: 5
							 | 
						|||
| 
								 | 
							
								forumTopicId: 302066
							 | 
						|||
| 
								 | 
							
								dashedName: problem-40-champernownes-constant
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# --description--
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								An irrational decimal fraction is created by concatenating the positive integers:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								0.12345678910**1**112131415161718192021...
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								It can be seen that the 12<sup>th</sup> digit of the fractional part is 1.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								If *d<sub>n</sub>* represents the *n*<sup>th</sup> digit of the fractional part, find the value of the following expression.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								d<sub>1</sub> × d<sub>10</sub> × d<sub>100</sub> × d<sub>1000</sub> × d<sub>10000</sub> × d<sub>100000</sub> × d<sub>1000000</sub>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# --hints--
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`champernownesConstant(100)` should return a number.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```js
							 | 
						|||
| 
								 | 
							
								assert(typeof champernownesConstant(100) === 'number');
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`champernownesConstant(100)` should return 5.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```js
							 | 
						|||
| 
								 | 
							
								assert.strictEqual(champernownesConstant(100), 5);
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`champernownesConstant(1000)` should return 15.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```js
							 | 
						|||
| 
								 | 
							
								assert.strictEqual(champernownesConstant(1000), 15);
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`champernownesConstant(1000000)` should return 210.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```js
							 | 
						|||
| 
								 | 
							
								assert.strictEqual(champernownesConstant(1000000), 210);
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# --seed--
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## --seed-contents--
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```js
							 | 
						|||
| 
								 | 
							
								function champernownesConstant(n) {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  return true;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								champernownesConstant(100);
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# --solutions--
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```js
							 | 
						|||
| 
								 | 
							
								function champernownesConstant(n) {
							 | 
						|||
| 
								 | 
							
								  let fractionalPart = '';
							 | 
						|||
| 
								 | 
							
								  for (let i = 0; fractionalPart.length <= n; i++) {
							 | 
						|||
| 
								 | 
							
								    fractionalPart += i.toString();
							 | 
						|||
| 
								 | 
							
								  }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  let product = 1;
							 | 
						|||
| 
								 | 
							
								  for (let i = 0; i < n.toString().length; i++) {
							 | 
						|||
| 
								 | 
							
								    const index = 10 ** i;
							 | 
						|||
| 
								 | 
							
								    product *= parseInt(fractionalPart[index], 10);
							 | 
						|||
| 
								 | 
							
								  }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  return product;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								```
							 |