【python】白俊2869号/カタツムリが行きたい/import math

5519 ワード

1.質問


https://www.acmicpc.net/problem/2869
地面にカタツムリがいます。このカタツムリはVメートルの棒に登る。 カタツムリは昼にAメートルも上がる。でも、夜寝るとBメートル滑る。また、山頂に登ると滑ることはありません。 カタツムリはすべての棒に登るので、何日かプログラムを作ってください。

2. Key point


🤔 しきを立てる


🐌Aメートル上がって、Bメートル滑って・・・无限に缲り返して
ある日Aメートルになると、Vメートルに着きました.
このようにして構築すると、
(A-B)*x + A >= V

このときxを残して式を整理し、
x >= (V-A) / (A-B)

ただし、このとき出力する必要がある値はx+1であり、xではない.
x天に上がったので最終日x+1日、V mに到着!

🧵 mathモジュールの利用


mathモジュールには、入力エラーの場合、整数値が返される関数ceil()があります.
上記の式では,x+1日の値を求める必要があるのでceil()関数を用いる.
import math

math.ceil(3.14) 	# 4
math.ceil(3)		# 3 (정수는 그대로 반환)
math.ceil(-3.14)	# -3


#c.f. math.floor()는 내림한 값을 반환한다.
math.floor(3.14)	# 3

3.私の回答


😵 最初のプール(mathモジュールが使用されていない場合)

A, B, V = map(int, input().split())
k=(V-A)%(A-B)
if k==0:
    print(int((V-A)//(A-B))+1)
else :
    print(int((V-A)//(A-B))+2)
✔も正しいですが、mathモジュールを使用して条件を区切る必要はありません😘

😎 2番目のプール(数学モジュールが使用されている場合)

import math
A, B, V = map(int, input().split())
print(math.ceil((V-A)/(A-B))+1)