塩見周子の徒然日記

自分のことを塩見周子と思い込んでいるオタクです

2/15 AtCoder(文字列一致、階乗の約数の個数)/ss

AtCoder
解くに至ったもの(3問)
ARC:065C/066C/067C

 

ARC065C

daydream(かっこいい)

与えられた文字列がdream,dreamer,erase,eraserの4要素で構成されているか否かを判定する問題

愚直に前から見ていこうとすると、dreamまで見たとき、次に続く単語が'er'であれば、'dreamer'で終わってんのか、それとも'eraser'と続くのかが判断できなくて困る

ということで、文字列を逆から見ていく方針で行く

文字列を逆にして、maerd,remaerd,esare,resareで構成されているかを判断すればよい

これは、ある単語の終わりが別の単語の始まりと一致していないために採用できる

与えられた文字列sを逆にするには、

t = s[::-1]

とすればよい

 

ARC067C

思いつかなかった

階乗は math.factorial(N) でN!を求められる

カウントは初期値1、i = 2~1001で調べて、N!がiで割り切れる間は割り続け、カウントを増やす+N!をiで割るを繰り返し、割り切れなくなったらカウントを答えに掛ける、iを1増やす、カウントを1に戻す、を繰り返せばよい

1000程度であれば30msくらいで終わってくれる

 

解けなかったもの

ARC:072C/074C

ARC072C

リストの値を更新して、それまでの和が0にならない&前項までの和と異なるようにする問題

前から見てけばええやろと思って場合分けするも、最初が0スタートの場合とかの特殊な場合分けにまごついたり想定解と違うなどで結局ACできず

偶数番目の項までの和を奇数にするか偶数にするかで二通り分けてやるというのが答えだった また後でやります 

 

ARC074C

チョコを三つに分けてmax-minを最小にする問題 つまり三つに均等に分けようねという話 

横方向の長方形で三つに分けるのと、横方向×1縦方向×2でT字になるように分けるにパターンをやればよい そしてなるべく均等に分けるのがよいことも利用する

また後でやります 

 

今日は調子が悪かった 気分も沈んでました 明日は今日よりはやる