59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 5900f53b1000cf542c51004d
 | |
| title: '問題 462: 3-smooth 数の順列'
 | |
| challengeType: 5
 | |
| forumTopicId: 302137
 | |
| dashedName: problem-462-permutation-of-3-smooth-numbers
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| 3-smooth 数とは、3 より大きい素因数を持たない整数のことです。 整数 $N$ に対して、$N$ 以下の 3-smooth 数の集合を $S(N)$ とします。 例えば、$S(20) = \\{1, 2, 3, 4, 6, 8, 9, 12, 16, 18\\}$ です。
 | |
| 
 | |
| 各要素のすべての真の約数の後にその要素が現れるような $S(N)$ の順列の個数を、$F(N)$ とします。
 | |
| 
 | |
| $N = 20$ に対して考えられる順列の一例を下に示します。
 | |
| 
 | |
| -   1, 2, 4, 3, 9, 8, 16, 6, 18, 12
 | |
| 
 | |
| 下の例は、12 が約数 6 の前に現れるので有効な順列ではありません。
 | |
| 
 | |
| -   1, 2, 4, 3, 9, 8, 12, 16, 6, 18
 | |
| 
 | |
| $F(6) = 5$, $F(8) = 9$, $F(20) = 450$, $F(1000) ≈ 8.8521816557e\\21$ であることを確認できます。
 | |
| 
 | |
| $F({10}^{18})$ を求めなさい。 回答は、科学的記数法による文字列を四捨五入して小数第 10 位まで示すこと。 回答は、小文字 `e` で仮数部と指数部を区切って書くこと。 例えば、 答えが $112\\,233\\,445\\,566\\,778\\,899$ の場合、`1.1223344557e17` の形式にします。
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| `permutationOf3SmoothNumbers()` は文字列を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(typeof permutationOf3SmoothNumbers() === 'string');
 | |
| ```
 | |
| 
 | |
| `permutationOf3SmoothNumbers()` は文字列 `5.5350769703e1512` を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(permutationOf3SmoothNumbers(), '5.5350769703e1512');
 | |
| ```
 | |
| 
 | |
| # --seed--
 | |
| 
 | |
| ## --seed-contents--
 | |
| 
 | |
| ```js
 | |
| function permutationOf3SmoothNumbers() {
 | |
| 
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| permutationOf3SmoothNumbers();
 | |
| ```
 | |
| 
 | |
| # --solutions--
 | |
| 
 | |
| ```js
 | |
| // solution required
 | |
| ```
 |