freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-338-cutting-rectang...

2.1 KiB
Raw Blame History

id title challengeType forumTopicId dashedName
5900f4be1000cf542c50ffd1 問題 338: 長方形の方眼紙を切る 5 301996 problem-338-cutting-rectangular-grid-paper

--description--

整数寸法 w × h の長方形の方眼紙が 1 枚与えられます。 格子の間隔は 1 です。

この紙を格子線に沿って 2 枚に切り離し、それらの紙を重ねずに並べ替えると、寸法が異なる新しい長方形ができます。

例えば下図のように、寸法 9 × 4 の紙を切り並べ替えると 18 × 2, 12 × 3, 6 × 6 の寸法の長方形を作ることができます。

寸法 9 × 4 の紙を切って作られる 3 種類の長方形 (寸法 18 × 2, 12 × 3, 6 × 6)

同様に、寸法 9 × 8 の紙から、寸法 18 × 4 と 12 × 6 の長方形を作ることができます。

wh の対について、寸法 w × h の紙で作れる相異なる長方形の数を F(w, h) とします。 例えば、F(2, 1) = 0, F(2, 2) = 1, F(9, 4) = 3, F(9, 8) = 2 です。 注意点として、最初の長方形と一致する長方形は F(w, h) に数えられません。 また、寸法 w × h と寸法 h × w の長方形は区別されません。

整数 N について、0 < h ≤ w ≤ N$ を満たすような wh の対のすべてに対する F(w, h) の和を G(N) とします。 G(10) = 55, G({10}^3) = 971\\,745, G({10}^5) = 9\\,992\\,617\\,687 であることを確認できます。

G({10}^{12}) を求めなさい。 mod {10}^8 で答えること。

--hints--

cuttingRectangularGridPaper()15614292 を返す必要があります。

assert.strictEqual(cuttingRectangularGridPaper(), 15614292);

--seed--

--seed-contents--

function cuttingRectangularGridPaper() {

  return true;
}

cuttingRectangularGridPaper();

--solutions--

// solution required