#author("2017-08-15T22:04:09+09:00","default:nobuoki","nobuoki")
#author("2017-08-15T22:05:38+09:00","default:nobuoki","nobuoki")
* 問題(和訳) [#d75e6558]
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2080
 
* 回答例 [#xf481b1c]
seq 100 | awk 'int(sqrt($1))^2!=$1' | sed 's/^/scale=100;sqrt(/;s/$/)/'|BC_LINE_LENGTH=0 bc |sed 's/./& /g;s/\.//' | awk '{for(i=1;i<=100;i++){a+=$i}}END{print a}'
#pre{{
40886

real    0m0.127s
user    0m0.130s
sys     0m0.023s 
}}

* 解説 [#j0c8b4b9]
#prism(bash){{{{
 # 初めの100個の自然数
 seq 100 | 
 
 # 無理数を抽出
 awk 'int(sqrt($1))^2!=$1' | 
 
 # bcで100桁を算出
 sed 's/^/scale=100;sqrt(/;s/$/)/'|BC_LINE_LENGTH=0 bc |
 
 # 100桁をスペース区切りにする(小数点は削除する)
 sed 's/./& /g;s/\.//' | 
 
 # 100桁分、足し算する
 awk '{for(i=1;i<=100;i++){a+=$i}}END{print a}'
# 初めの100個の自然数
seq 100 |

# 無理数を抽出
awk 'int(sqrt($1))^2!=$1' |

# bcで100桁を算出
sed 's/^/scale=100;sqrt(/;s/$/)/'|BC_LINE_LENGTH=0 bc |

# 100桁をスペース区切りにする(小数点は削除する)
sed 's/./& /g;s/\.//' |

# 100桁分、足し算する
awk '{for(i=1;i<=100;i++){a+=$i}}END{print a}'
}}}}

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