ABC195のA、B問題やりました。
C問題はこちら
ABCの第195回の過去問やりました
感想とか書いてきます。
あ、言語はPythonです。PyPyの方が早いらしいので提出はPyPyでやってます。
目次
A問題
問題文
HをMで割った余りが0だったら割り切れるって感じですね。
提出したのはこんな感じです。
m,h = map(int,input().split())
if h%m == 0:
print("Yes")
else:
print("No")
B問題(チャレンジ編)
無理。わからん。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問題はこちら