2022-01-21 01:00:18 +05:30
|
|
|
---
|
|
|
|
id: 5900f48d1000cf542c50ff9f
|
2022-01-22 20:38:20 +05:30
|
|
|
title: '問題 288: 巨大な階乗'
|
2022-01-21 01:00:18 +05:30
|
|
|
challengeType: 5
|
|
|
|
forumTopicId: 301939
|
|
|
|
dashedName: problem-288-an-enormous-factorial
|
|
|
|
---
|
|
|
|
|
|
|
|
# --description--
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
任意の素数 $p$ に対し、数 $N(p,q)$ は $N(p,q) = \sum_{n=0}^q T_n \times p^n$ と定義されます。$T_n$ は下の乱数生成法で生成されます。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-04-02 14:16:30 +05:30
|
|
|
$$\begin{align} & S_0 = 290797 \\\\
|
|
|
|
& S_{n + 1} = {S_n}^2\bmod 50\\,515\\,093 \\\\ & T_n = S_n\bmod p \end{align}$$
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$Nfac(p,q)$ を、$N(p,q)$ の階乗と定義します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$NF(p,q)$ を、$Nfac(p,q)$ 内の因数 $p$ の数と定義します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$NF(3,10000) \bmod 3^{20} = 624\\,955\\,285$ が与えられます。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$NF(61,{10}^7)\bmod {61}^{10}$ を求めなさい。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
# --hints--
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`enormousFactorial()` は `605857431263982000` を返す必要があります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert.strictEqual(enormousFactorial(), 605857431263982000);
|
|
|
|
```
|
|
|
|
|
|
|
|
# --seed--
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
```js
|
|
|
|
function enormousFactorial() {
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
enormousFactorial();
|
|
|
|
```
|
|
|
|
|
|
|
|
# --solutions--
|
|
|
|
|
|
|
|
```js
|
|
|
|
// solution required
|
|
|
|
```
|