mery's Notes

めりーがプログラミングしたりします。

MENU

ABC195のA、B問題やりました。

C問題はこちら

 

mery-kirokudayo.hateblo.jp

f:id:mery_poke:20211101230800p:plain

 

ABCの第195回の過去問やりました

感想とか書いてきます。

 

あ、言語はPythonです。PyPyの方が早いらしいので提出はPyPyでやってます。

 

目次

 

A問題

問題文

atcoder.jp

 

 

HをMで割った余りが0だったら割り切れるって感じですね。

提出したのはこんな感じです。

 

m,h = map(int,input().split())
if h%m == 0:
print("Yes")
else:
print("No")

 

 

B問題(チャレンジ編)

atcoder.jp

 

無理。わからん。B問題なのに茶diffなんだもんね。この問題。

 

とりあえず最大値のBでWを割ってあーだこーだするんだろーなーとは思いました。

 

でも、テストケースの例2でやってみて、2000を150で割って13余り5になって、余りが5じゃどーしよーもねーな、と。。。

 

💡

 

 

んじゃ、割るのではなく、引き算を繰り返して正解数にカウントしていくかーって思い、コードを実行!

やったのはこんなコード

a,b,c = map(int,input().split())
ans_max = 0
ans_min = 0
c *= 1000
flg = 0
w = c

# 最小値を求める。
while w > 0:
w = w-b
ans_min += 1
if a <= w <= b:
ans_min += 1
break
else:
flg = 1

# wの初期化
w = c
# 最大値を求める
while w > 0:
w = w-a
ans_max += 1
if a <= w <= b and a*2 < b:
ans_max += 1
break

if flg == 1:
print("UNSATISFIABLE")
else:
print(ans_min,ans_max)

 

うまくいくかなーって思ったけど、テストケースの2で引っかかった。

やっぱり「UNSATISFIABLE」って出力する場合がわかんないと無理かなぁって思いました。

 

B問題(正解編)

 

んで、解説を見たら

 

 が成り立つとき Yes、成り立たないとき No です。

 

とのこと。

 

テストケース2で試してみたら、

⚠Xは取り得る数です。

N = 1のとき、

120 <= X <= 150

 

N =  2のとき、

240 <= X <= 300

 

という感じで、150〜240の間の値をXは取れないので「UNSATISFIABLE」となるっぽい。

これ時間中に思いつけた人すげーなって思いました。

 

明日もなんかやるつもりです。

バイト休みになったし・・・

 

C問題はこちら

 

mery-kirokudayo.hateblo.jp