138B. Digits Permutations

概要

数字列nを並び替えてx, yを作ったとき、
x+yの下位にできるだけたくさん0が並ぶようなx, yを求める
初め条件を「n<10^5」と勘違いしてTLE
まず各桁が何個あるかを数える
10になるペアを全探索、探索自体は9になるペア→0になるペア(最後につける)→残りの順にgreedy

出展

Round #99 Div.1 B
Round #99 Div.2 D

138A. Literature Lesson

概要

後ろからk文字目の母音以降でどんな韻を踏んでいるか判断する
4単語周期で、すべての周期で同じ韻と考える
韻の種類は aaaa / aabb / abab / abba どれでも無い場合はNO
本番はk文字目以降の母音だけ考えていて落ちる

出展

Round #99 Div.1 A
Round #99 Div.2 C

121A. Lucky Sum

概要

sum { nextLucky(x) | x <- [l,r] } を求める
範囲が広いので、nextLuckyが同じところは掛け算でまとめる

出展

Round #91 Div.1 A
Round #91 Div.2 C

122B. Lucky Substring

概要

部分文字列の中でもっとも多く出現するlucky numberを求める
同じ数なら辞書順最小のものを選ぶ
無いときは-1
"4"か"7"かしかありえないのでそれを数えるだけ

ソース

なぜか"47"と"74"も考慮してしまった
コーナーケースの処理を適当にやったので分かりにくいです
https://github.com/mkut/cf/tree/master/01-99/91/122B/haskell.hs

出展

Round #91 Div.2 B