#author("2017-10-11T19:42:28+09:00","default:nobuoki","nobuoki")
* 問題(和訳) [#k8cd7449]
Problem 28 「螺旋状に並んだ数の対角線」
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2028

* 回答例 [#l672b2b6]
seq 1 2 1001 | awk 'NR==1{print}NR>1{print 4*$1^2-6*$1+6}' | awk '{a+=$1}END{print a}'

* 実行結果 [#g705e41c]
#pre{{
669171001

real    0m0.004s
user    0m0.000s
sys     0m0.000s
}}

* 解説 [#la9269e7]
- 螺旋は 1x1, 3x3, 5x5, ..., のように、一辺の長さが奇数になる
- 一辺の長さ n > 1 のとき、四つ角の合計値は、
n^2 + {n^2-(n-1)} +{ n^2-2(n-1)} +{ n^2-3(n-1)} = 4n^2-6n+6 で求められる
- n=1..1001 を素直に計算し、和を求める

#prism(bash){{{{
# 1..1001までの奇数を生成
seq 1 2 1001 |
# 螺旋の4隅の合計値を求める
awk '
  # n=1 の時、 1 を出力
  NR==1{ print }
  # n>1 の時、4隅の合計値を出力
  NR>1 { print 4*$1^2-6*$1+6}
' |
# 和を出力
awk '{a+=$1}END{print a}'
}}}}


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS