問題(和訳)

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2063

回答例

$ time seq 9 | awk '{for(i=1;i<=50;i++){print $1,i}}' | paste - <(seq 9 | awk '{for(i=1;i<=50;i++){print $1^i}}' | bc) | awk '$2==length($3)' | wc -l
49
 
real    0m0.024s
user    0m0.006s
sys     0m0.017s

解説

10^n=(n+1)桁、になってしまうので、x<=9について考える

 # x, n, x^n という並びのデータを生成する
 # x^n はawkだと桁あふれしそうなのでbcで計算
 #  (x, n と x^n を別々に作成し、pasteでくっつける)
 # ちなみに n<=50 は適当です
 
 # x, n を作る
 seq 9 | awk '{for(i=1;i<=50;i++){print $1,i}}' | 
 
 # paste で x^n をくっつける(awkで式を作り、bcで計算)
 paste - <(seq 9 | awk '{for(i=1;i<=50;i++){print $1^i}}' | bc) | 
 
 # n == x^nの桁数 を抽出し行数を数える
 awk '$2==length($3)' | wc -l

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-03-24 (日) 07:44:02