SOMPO HD プログラミングコンテスト2021(AtCoder Beginner Contest 192) 備忘録

SOMPO HD プログラミングコンテスト 2021(AtCoder Beginner Contest 192)の備忘録です。

問題はこちら↓

今回はABC3完でした。

・A問題:Star

コインを100枚集める毎にご褒美がもらえる。今 X 枚のコインを持っている場合に、次にご褒美を貰うためにはあと何枚のコインを集めればいいか求める。ただし、X が100の倍数の場合、X 枚集めたことに対するご褒美は既に貰ったとする。
X を100で割った余りを100から引くことで求めることができる。

解答例(Python)
https://atcoder.jp/contests/abc192/submissions/20342424

・B問題:uNrEaDaBlE sTrInG

先頭から奇数番目の文字が全て英小文字であり、かつ、先頭から偶数番目の文字が全て英大文字であるような文字列を読みにくい文字列と呼ぶ。
文字列 S が読みにくい文字列かどうか判定する。
Pythonでは lower(),upper() メソッドでそれぞれ小文字、大文字に変換できるので、奇数番目の時は Si と Si.lower() が一致するか調べ、偶数番目も同様に Si と Si.upper() が一致するか調べる。一度でも一致しなければ答えは No になる。全て一致した場合は Yes になる。

解答例(Python)
https://atcoder.jp/contests/abc192/submissions/20343245

・C問題:Kaprekar Number

0 以上の整数 x に対して、g1(x),g2(x),f(x) を次のように定義する。

・g1(x) = x を十進法で表した時の各桁の数字を大きい順に並べ替えてできる整数
・g2(x) = x を十進法で表した時の各桁の数字を小さい順に並べ替えてできる整数
・ f(x) = g1(x) - g2(x)

ただし先頭の余分な0は無視される。
整数 N , K が与えられるので、a[0] = N , a[i+1] = f(a[i])(i≧0) で定まる数列の a[k] を求める。
上記の条件通りの関数をそれぞれ作成し、順番に計算していくことで求めることができる。x を並べ替える際は文字列型に変換してソートして、数値型に再度変換する必要がある。その際、sorted関数を使用すると戻り値として配列が返ってくるため、joinメソッドで一つにまとめてから変換する事に注意する。

解答例(Python)
https://atcoder.jp/contests/abc192/submissions/20345123

この記事が気に入ったらサポートをしてみませんか?