問題(和訳)

Problem 29 「個別のべき乗」
https://goo.gl/A6g1A

回答例

echo {2..100}^{2..100}$'\n' | BC_LINE_LENGTH=0 bc | awk '{a[$1]++}END{for(v in a){print v}}' | wc -l

実行結果

9183

real    0m0.235s
user    0m0.160s
sys     0m0.070s

解説

全ての a^b を生成し、 bc で計算、結果を awk, wc で集計します
ここでは bash のブレース展開を使っていますが、
awk等でべた書きした方が移植性は高いはずです

#!/bin/bash
# bash のブレース展開で a^b を全て書き出す
echo {2..100}^{2..100}$'\n' |
# bc で a^b を計算、出力は改行しない(BC_LINE_LENGTH=0)
BC_LINE_LENGTH=0 bc |
# awk で重複を取り除く
awk '{a[$1]++}END{for(v in a){print v}}' |
# 行数を数える
wc -l

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-10-11 (水) 21:13:47