hdu 4823 Energy Conversion 構造

來源:互聯網
上載者:User

標籤:

題目連結:HDU - 4823

魔法師百小度也有遇到難題的時候——
現在,百小度正在一個古老的石門面前,石門上有一段古老的魔法文字,讀懂這種魔法文字需要耗費大量的能量和大量的腦力。
過了許久,百小度終於讀懂魔法文字的含義:石門裡面有一個石盤,魔法師需要通過魔法將這個石盤旋轉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^8Output

對於每組資料,請輸出最少做幾次能量轉換才能夠有足夠的能量點開門;
如果無法做到,請直接輸出-1。

題意描述:中文題目,如上所述。

演算法分析:這是2014年百度之星的資格賽的一道水題,直接做,沒什麼演算法而言。

 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<cmath> 6 #include<algorithm> 7 #define inf 0x7fffffff 8 using namespace std; 9 typedef long long LL;10 11 LL n,m,v,k;12 13 int main()14 {15     int t;16     scanf("%d",&t);17     while (t--)18     {19         scanf("%I64d%I64d%I64d%I64d",&n,&m,&v,&k);20         if (m>=n) {printf("0\n");continue; }21         if (m<=v) {printf("-1\n");continue; }22         int cnt=0,flag=0;23         while (m<n)24         {25             int a=m;26             m=(m-v)*k;27             cnt ++ ;28             if (m==a || m<=v) {flag=1;printf("-1\n");break; }29         }30         if (!flag) printf("%d\n",cnt);31     }32     return 0;33 }

 

hdu 4823 Energy Conversion 構造

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.