ACM-百度之星資格賽之Energy Conversion——hdu4823
阿新 • • 發佈:2017-06-06
ios break get enter span bmi ria hint -c
Total Submission(s): 85 Accepted Submission(s): 46
Problem Description 魔法師百小度也有遇到難題的時候——
如今。百小度正在一個古老的石門面前。石門上有一段古老的魔法文字,讀懂這樣的魔法文字須要耗費大量的能量和大量的腦力。
過了許久。百小度最終讀懂魔法文字的含義:石門裏面有一個石盤。魔法師須要通過魔法將這個石盤旋轉X度,以使上面的刻紋與天相相應,才幹打開石門。
可是,旋轉石盤須要N點能量值。而為了解讀密文,百小度的能量值僅僅剩M點了!破壞石門是不可能的,由於那將須要很多其它的能量。只是,幸運的是。作為魔法師的百小度能夠耗費V點能量。使得自己的能量變為如今剩余能量的K倍(魔法師的世界你永遠不懂,誰也不知道他是怎麽做到的)。比方。如今百小度有A點能量,那麽他能夠使自己的能量變為(A-V)*K點(能量在不論什麽時候都不能夠為負,即:假設A小於V的話,就不能夠運行轉換)。
然而,在解讀密文的過程中,百小度預支了他的智商,所以他如今不知道自己是否可以旋轉石盤,打開石門,你能幫幫他嗎?
Input 輸入數據第一行是一個整數T。表示包括T組測試例子。
接下來是T行數據,每行有4個自然數N,M,V,K(字符含義見題目描寫敘述)。
數據範圍:
T<=100
N,M,V,K <= 10^8
Output 對於每組數據,請輸出最少做幾次能量轉換才可以有足夠的能量點開門;
假設無法做到,請直接輸出-1。
Sample Input
Sample Output
Source 2014年百度之星程序設計大賽 - 資格賽
Energy Conversion
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 85 Accepted Submission(s): 46
Problem Description 魔法師百小度也有遇到難題的時候——
如今。百小度正在一個古老的石門面前。石門上有一段古老的魔法文字,讀懂這樣的魔法文字須要耗費大量的能量和大量的腦力。
過了許久。百小度最終讀懂魔法文字的含義:石門裏面有一個石盤。魔法師須要通過魔法將這個石盤旋轉X度,以使上面的刻紋與天相相應,才幹打開石門。
可是,旋轉石盤須要N點能量值。而為了解讀密文,百小度的能量值僅僅剩M點了!破壞石門是不可能的,由於那將須要很多其它的能量。只是,幸運的是。作為魔法師的百小度能夠耗費V點能量。使得自己的能量變為如今剩余能量的K倍(魔法師的世界你永遠不懂,誰也不知道他是怎麽做到的)。比方。如今百小度有A點能量,那麽他能夠使自己的能量變為(A-V)*K點(能量在不論什麽時候都不能夠為負,即:假設A小於V的話,就不能夠運行轉換)。
然而,在解讀密文的過程中,百小度預支了他的智商,所以他如今不知道自己是否可以旋轉石盤,打開石門,你能幫幫他嗎?
Input 輸入數據第一行是一個整數T。表示包括T組測試例子。
接下來是T行數據,每行有4個自然數N,M,V,K(字符含義見題目描寫敘述)。
數據範圍:
T<=100
N,M,V,K <= 10^8
Output 對於每組數據,請輸出最少做幾次能量轉換才可以有足夠的能量點開門;
假設無法做到,請直接輸出-1。
Sample Input
4 10 3 1 2 10 2 1 2 10 9 7 3 10 10 10000 0
Sample Output
3 -1 -1 0
Source 2014年百度之星程序設計大賽 - 資格賽
題目:http://acm.hdu.edu.cn/showproblem.php?pid=4823
一道非常easy的題目,題意一目了然。
一個循環就搞定了。
唯一一個坑就是,存儲數據用long long。
然後每次推斷 不僅要推斷 剩余魔法是否足夠使用轉換魔法,還要推斷 這次轉換後魔法是否多余之前沒轉換時的魔法。
這樣就能夠過了。
/**************************************** ***************************************** * Author:Tree * *From :http://blog.csdn.net/lttree * * Title : Energy Conversion * *Source: hdu 4823 百度之星資格賽 * * Hint : water * ***************************************** ****************************************/ #include <iostream> using namespace std; int main() { int n,m,v,k,t; int step; // 要用long long 喲~!long long now,pre; cin>>t; while( t-- ) { cin>>n>>m>>v>>k; step=0; now=m; while( now<n ) { pre=now; now=(pre-v)*k; // 假設剩余能量小於施展轉換魔法的能量,或者當前能量小於轉換之前的能量。則永遠無法成功 if( now<v || pre>=now ) { step=-1; break; } ++step; } cout<<step<<endl; } return 0; }
ACM-百度之星資格賽之Energy Conversion——hdu4823