2.1 KiB
2.1 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5900f3881000cf542c50fe9b | 問題 28: らせん状に配置された数字の対角線 | 5 | 301930 | problem-28-number-spiral-diagonals |
--description--
数 1 から始めて時計回りに右へ移動していくと、次のように 5 x 5 のらせんができます。
21
22 23 24 25
20
7
8 9
1019 6
1
2 1118
5
4 3
1217
16 15 14 13
2 本の対角線上の数の和が 101 であることを確認できます。
同じように得られた n
x n
のらせんの 2 本の対角線上の数の和を求めなさい。
--hints--
spiralDiagonals(101)
は数値を返す必要があります。
assert(typeof spiralDiagonals(101) === 'number');
spiralDiagonals(101)
は 692101 を返す必要があります
assert(spiralDiagonals(101) == 692101);
spiralDiagonals(303)
は、18591725 を返す必要があります。
assert(spiralDiagonals(303) == 18591725);
spiralDiagonals(505)
は85986601を返す必要があります。
assert(spiralDiagonals(505) == 85986601);
spiralDiagonals(1001)
は 669171001 を返す必要があります。
assert(spiralDiagonals(1001) == 669171001);
--seed--
--seed-contents--
function spiralDiagonals(n) {
return n;
}
spiralDiagonals(1001);
--solutions--
const spiralDiagonals = (n) => {
const Sn2 = (n) => {
return n*(n+1)*(2*n+1)/6;
};
const Sn = (n) => {
return n*(n+1)/2;
};
let sum = (Sn2(n-1) + Sn(n-1) + n-1) + (Math.floor(n/2) + Sn2(n));
return sum;
};