codeforces 1354A 菜鳥題解

2021-10-10 08:40:29 字數 1273 閱讀 1892

輸入為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個...