Project Euler 028を解いてみる。「螺旋状に並んだ数の対角線」
Project Euler 028
1から初めて右方向に進み時計回りに数字を増やしていき, 5×5の螺旋が以下のように生成される:
両対角線上の数字の合計は101であることが確かめられる.
1001×1001の螺旋を同じ方法で生成したとき, 対角線上の数字の和はいくつか?
->次の問題
考え方
当直で呼ばれ、時間も元気もなくなったので定番のゴリ押しで行きます(^q^)
最も内側の四角形は3,5,7,9と2ずつ増え、その1つ外側では13,17,21,25と4ずつ増えます。外周が1つ外側に行くと辺の長さは2ずつ増えるので、それぞれの角の差も2ずつ増えていきます。
これをコードにして1001まで回します。
コード
def main():
num = 1 # 対角線上の数
answer = 1 # 答え用の変数
for i in range(2, 1001, 2): # iは2ずつ増える
for _ in range(4):
num += i # 対角線の数を計算し、
answer += num # 合計に足す
print(answer)
if __name__ == '__main__':
from time import time as t
st = t()
main()
print(t() - st, 'sec')
paizaにて実行
結果
669171001
0.0002090930938720703 sec
Author And Source
この問題について(Project Euler 028を解いてみる。「螺旋状に並んだ数の対角線」), 我々は、より多くの情報をここで見つけました https://qiita.com/radiol/items/439c131f8ec1931f66aa著者帰属:元の著者の情報は、元の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 .