2022-01-21 01:00:18 +05:30
|
|
|
---
|
|
|
|
id: 5900f4e51000cf542c50fff6
|
2022-01-22 20:38:20 +05:30
|
|
|
title: '問題 374: 整数分割の最大の積'
|
2022-01-21 01:00:18 +05:30
|
|
|
challengeType: 5
|
|
|
|
forumTopicId: 302036
|
|
|
|
dashedName: problem-374-maximum-integer-partition-product
|
|
|
|
---
|
|
|
|
|
|
|
|
# --description--
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
数 $n$ の整数分割とは、$n$ を正の整数の和として表す方法です。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
加数や被加数の順序のみが異なる分割は同じものとみなされます。 $n$ を相異なる部分に分割することは、いずれの部分も一度のみ現れるような形で $n$ を分割することです。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
5 を相異なる部分に分割すると、次のようになります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
5, 4 + 1, 3 + 2
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$n$ を相異なる部分に分割したとき、各部分の積が最大になるような分割における積を $f(n)$ とします。また、その積をもたらすような $n$ の分割の要素数を $m(n)$ とします。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
したがって、$f(5) = 6$, $m(5) = 2$ となります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$n = 10$ の場合、積が最大となる分割は $10 = 2 + 3 + 5$ で、 $f(10) = 30$ と $m(10) = 3$ が導かれます。 そしてそれらの積は $f(10) \times m(10) = 30 \times 3 = 90$ となります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$1 ≤ n ≤ 100 のとき、$\sum f(n) \times m(n)$ = 1\\,683\\,550\\,844\\,462$ となることを確認できます。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
$1 ≤ n ≤ {10}^{14}$ のとき、$\sum f(n) \times m(n)$ を求めなさい。 5000 万番目の素数 $982\\,451\\,653$ で割った余りで答えること。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
# --hints--
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`maximumIntegerPartitionProduct()` は `334420941` を返す必要があります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert.strictEqual(maximumIntegerPartitionProduct(), 334420941);
|
|
|
|
```
|
|
|
|
|
|
|
|
# --seed--
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
```js
|
|
|
|
function maximumIntegerPartitionProduct() {
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
maximumIntegerPartitionProduct();
|
|
|
|
```
|
|
|
|
|
|
|
|
# --solutions--
|
|
|
|
|
|
|
|
```js
|
|
|
|
// solution required
|
|
|
|
```
|