ABC193(2021/02/27)振り返り

A問題、B問題

難なく実装。


C問題

テストケースが、100000→99634だったから、a^bで表せない数を見つけるより、表せる数366個を見つけるほうが速そうだと推測(ここまでは合ってた)。

2 , 2^2 , 2^3 , ... , 3 3^2 , 3^3 , ... と数えていくが、4 , 4^2 , 4^3 , ... は 2^2 , 2^4 , 2^6 , ... と被るから除外したほうが良さそう。

つまり、平方数を除外する。

と思って書いてみたけど、実行してみたら99622で、12個多く除外してた。

原因調べたいけど、どこで間違えてるのかわからずにタイムアップ。

今思うと2^6 = 8^2 みたいな重複を取り除けてなかったってことだと思う。多分。

(D問題は、ちらっと見てみたけど残り時間的に厳しそうでパスした)


コンテスト終わってからかつっぱさんのYouTube見て、Pythonにsetというデータ型があることを知る。

集合演算を行えるデータ型で、重複を自動的に取り除くことができる。これは便利。

あと、Pythonのforループの開始、終了の指定方法と、リストの合計とか平均を求める関数もわかった


# 知ってた書き方
for i in range(10):
  
# 初めて知った書き方
for i in range(4, 10):


# 知ってた書き方
a = [2, 4, 6]
SUM = 0
for i in a:
  SUM += i
print(SUM)

# 初めて知った書き方
a = [2, 4, 6]
print(sum(a))

↓かつっぱさん ABC193 A~D問題

https://www.youtube.com/watch?v=IhqWKe3F3Wc

↓Python set型

https://note.nkmk.me/python-set/

↓Python リストの合計

https://techacademy.jp/magazine/23326

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