輸入為a b c d
總共要睡a分鐘;
每次休息時間為b分鐘;
鬧鈴每次設定後c分鐘響;
每次被鬧鈴吵醒需要d分鐘睡著;
說人話:
在下次鬧鈴響之前,我能睡c - d分鐘;
在第一鬧鈴響之前,我能睡b分鐘。
最後求需要的總時間!!!
如果說a < b,那麼說明第一次我還沒睡醒呢,睡得時間已經夠了,那麼總睡眠時間b分鐘,直接不用往下做了;
如果說a > b,並且距離下次鬧鈴響需要5分鐘,然鵝,我睡著需要10分鐘,那麼我就永遠不可能睡夠a分鐘;
如果不滿足以上條件,那就可以先算出鬧鈴響幾次才能睡夠,然後響的次數乘以鬧鈴時間,再加上最開始的b分鐘,就是結果,正解!開搞。
所以說,根據以上資訊就能夠算出來,總共鬧鈴要響幾次,cnt = (a - b) / (c - d),但是這裡有可能會是小數,這時候需要向上取整,但是不能強轉double,然後用ceil函式,因為範圍太大,要用的是long long,所以這個時候判斷一下(a - b) % (c - d) == 0,如果成立,那麼說明是剛剛好,如果不成立,那麼還要加1(手動向上取整~)。
所有資訊搞出來了,然後就是**了
#include
using
namespace std;
typedef
long
long ll;
intmain()
if(b >= a)
ll ret =0;
if((a - b)
%(c - d)==0
) ret =
(a - b)
/(c - d)
;else
ret =
(a - b)
/(c - d)+1
; ret = b + ret * c;
cout << ret << endl;
}return0;
}
個人習慣,喜歡用cin 和cout,看個人習慣。
對了對了,之前有人說向上取整用(a - 1) / b + 1更準確,暫時還沒試,我先記下來
有志者,事竟成,破釜沉舟,百二秦關終屬楚。苦心人,天不負,臥薪嘗膽,三千越甲可吞吳。
HFUTOJ problem 1354實現總結
description 小明非常喜愛物理,有一天,他對物理實驗室中常用的彈簧拉力計產生了興趣。實驗室中有兩種質量不同的砝碼,小明分別用a個第一種砝碼放在彈簧拉力計上和b個第二種砝碼放在彈簧拉力計上,假設每增加單位重量的砝碼,彈簧拉力計的長度增加1,那麼兩次稱量彈簧拉力計的長度差是多少呢?假設拉力計不...
1354 選數字 (揹包)
1354 選數字 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 當給定乙個序列a 0 a 1 a 2 a n 1 和乙個整數k時,我們想找出,有多少子串行滿足這麼乙個條件 把當前子串行裡面的所有元素乘起來恰好等於k。樣例解釋 對於第乙個資料,我們可以選擇 3 或...
HFUT ACM1354砝碼稱重
砝碼稱重 time limit 1000 ms memory limit 65536 kb total submissions 362 accepted 198 description 小明非常喜愛物理,有一天,他對物理實驗室中常用的彈簧拉力計產生了興趣。實驗室中有兩種質量不同的砝碼,小明分別用a個...