Files
freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-374-maximum-integer-partition-product.md

55 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

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