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

1.7 KiB

id title challengeType forumTopicId dashedName
5900f4e51000cf542c50fff6 問題 374: 整数分割の最大の積 5 302036 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) = 30m(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 を返す必要があります。

assert.strictEqual(maximumIntegerPartitionProduct(), 334420941);

--seed--

--seed-contents--

function maximumIntegerPartitionProduct() {

  return true;
}

maximumIntegerPartitionProduct();

--solutions--

// solution required