57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 5900f5411000cf542c510052
 | |
| title: '問題 467: 超越整数'
 | |
| challengeType: 5
 | |
| forumTopicId: 302142
 | |
| dashedName: problem-467-superinteger
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| 整数 $n$ の数字が別の整数 $s$ の数字の部分列になる場合、整数 $s$ を整数 $n$ の「超越整数」と呼ぶことにします。
 | |
| 
 | |
| 例えば、2718281828 は 18828 の超越整数ですが、314159 は 151 の超越整数ではありません。
 | |
| 
 | |
| $p(n)$ を $n$ 番目の素数とし、$c(n)$ を $n$ 番目の合成数とします。 例えば、$p(1) = 2$, $p(10) = 29$, $c(1) = 4$, $c(10) = 18$ です。
 | |
| 
 | |
| $$\begin{align} & \\{p(i) : i ≥ 1\\} = \\{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, \ldots \\} \\\\ & \\{c(i) : i ≥ 1\\} = \\{4, 6, 8, 9, 10, 12, 14, 15, 16, 18, \ldots \\} \end{align}$$
 | |
| 
 | |
| $\\{p(i)\\}$ の数字根からなる数列を $P^D$ とすると、次のようになります ($C^D$ は $\\{c(i)\\}$ に対して同様に定義されます)。
 | |
| 
 | |
| $$\begin{align} & P^D = \\{2, 3, 5, 7, 2, 4, 8, 1, 5, 2, \ldots \\} \\\\ & C^D = \\{4, 6, 8, 9, 1, 3, 5, 6, 7, 9, \ldots \\} \end{align}$$
 | |
| 
 | |
| $P^D$ の最初の $n$ 個の要素をつなげた整数を $P_n$ とします ($C_n$ は $C^D$ に対して同様に定義されます)。
 | |
| 
 | |
| $$\begin{align} & P_{10} = 2\\,357\\,248\\,152 \\\\ & C_{10} = 4\\,689\\,135\\,679 \end{align}$$
 | |
| 
 | |
| $P_n$ と $C_n$ の共通の超越整数である最小の正の整数を、$f(n)$ とします。 例えば、$f(10) = 2\\,357\\,246\\,891\\,352\\,679$, $f(100)\bmod 1\\,000\\,000\\,007 = 771\\,661\\,825$ です。
 | |
| 
 | |
| $f(10\\,000)\bmod 1\\,000\\,000\\,007$ を求めなさい。
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| `superinteger()` は `775181359` を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(superinteger(), 775181359);
 | |
| ```
 | |
| 
 | |
| # --seed--
 | |
| 
 | |
| ## --seed-contents--
 | |
| 
 | |
| ```js
 | |
| function superinteger() {
 | |
| 
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| superinteger();
 | |
| ```
 | |
| 
 | |
| # --solutions--
 | |
| 
 | |
| ```js
 | |
| // solution required
 | |
| ```
 |