問題(和訳)

https://goo.gl/unjXS Problem 32 - PukiWiki

回答

(seq 12345 98765 | sed 's/../& /';seq 12345 98765 | sed 's/./& /') | awk '{print $0,$1*$2}'| awk '$3<10000' | grep 1 | grep 2 | grep 3 | grep 4 | grep 5 | grep 6 | grep 7 | grep 8 | grep 9 | awk '{a[$3]=a[$3]", "$1" "$2}END{for(v in a){print v, a[v]}}' | awk '{a+=$1}END{print a}'

45228

real   0m0.334s
user   0m0.350s
sys    0m0.130s

解説

9桁のパンデジタル数で収まるには、

  • 1桁*4桁=4桁
  • 2桁*3桁=4桁

の2通りのみである
上記2通りの掛け算の組み合わせを全部出し、9桁のパンデジタル数になっているものを抽出

 # 1桁*4桁、2桁*3桁の組み合わせを列挙                                                                                               
 (seq 12345 98765 | sed 's/../& /';seq 12345 98765 | sed 's/./& /') |                                                               
                                                                                                                                    
 # 掛け算                                                                                                                           
 awk '{print $0,$1*$2}'|                                                                                                            
                                                                                                                                    
 # 掛け算して4桁になるもの(全部で9桁になるもの)を抽出                                                                             
 awk '$3<10000' |                                                               
         
 # パンデジタル数を抽出       
 grep 1 | grep 2 | grep 3 | grep 4 | grep 5 | grep 6 | grep 7 | grep 8 | grep 9 |
                                                       
 # 積が重複しているものを束ねる
 awk '{a[$3]=a[$3]", "$1" "$2}END{for(v in a){print v, a[v]}}' |
                                                                                
 # 積の和を求める                                                                
 awk '{a+=$1}END{print a}'

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-08-15 (火) 22:03:04