NISHIO Hirokazu[Translate]
dwango2015_prelims_2
与えられた文字列から「25」の繰り返しの文字列を切り出す方法がいくつあるか数え上げ
25がN個続いた部分文字列がある時、三角数tri(N)がその部分から切り出せる個数
続いてる部分を調べるのに自分でループ回すより正規表現で切り出す方が速かろう
簡単だと思ってテストドリブンにしなかったせいで「正規表現の中でカッコが使われた場合findallはその範囲だけを返す」という仕様を忘れててWAした
(?: ) はキャプチャしないグループ化
python
import re def tri(x): return x * (x + 1) // 2 S = input() ret = 0 print(sum(tri(len(s) // 2) for s in re.findall("(?:25)+", S)))

"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]