Project Euler 28「螺旋状に並んだ数の対角線」
3053 ワード
ジーっと眺めて閃いちゃえば後は簡単。
Problem 28 「螺旋状に並んだ数の対角線」
1から初めて右方向に進み時計回りに数字を増やしていき, 5×5の螺旋が以下のように生成される:
両対角線上の数字の合計は101であることが確かめられる.
1001×1001の螺旋を同じ方法で生成したとき, 対角線上の数字の和はいくつか?
def hoge(num):
ans = 1 # 1は最初に加算しておく
# 3, 5, 7, ..., 1001 という風にnを奇数としてループ
for n in range(3, num+1, 2):
# 四隅を加算
for m in range(4):
ans += n ** 2 - (n - 1) * m
return ans
print(hoge(1001))
この位なら私でもワンライナーでいけちゃう。
上のをそのまま1行にしただけ。
sum([ n**2 - (n-1) * m for n in range(3, num+1, 2) for m in range(4) ]) + 1
Author And Source
この問題について(Project Euler 28「螺旋状に並んだ数の対角線」), 我々は、より多くの情報をここで見つけました https://qiita.com/yopya/items/6ea8edea8fdfeb70e400著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .