codeforces 165B(Burning Midnight Oil)
生活随笔
收集整理的這篇文章主要介紹了
codeforces 165B(Burning Midnight Oil)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題意描述】
本題就是給定代碼任務為n行,起始代碼書寫能力為v行,然后每經過一次除以k,當v變為0時看是否完成代碼任務n?并求出最小的v。
【解題思路】
我們可以對v值進行二分,然后確定最后的v值。
【AC代碼】
1 #include<iostream> 2 using namespace std; 3 int ok(int v,int k) 4 { 5 int sum=v; 6 while(v!=0) 7 { 8 sum+=v/k; 9 v/=k; 10 } 11 return sum; 12 } 13 int main() 14 { 15 int n,k; 16 while(cin>>n>>k) 17 { 18 int up,low,ans=1; 19 if(n>k) 20 { 21 up=n;low=1; 22 while(low<=up) 23 { 24 int mid=(up+low)/2; 25 int num=ok(mid,k); 26 if(num>=n) {up=mid-1;ans=mid;} 27 else low=mid+1; 28 } 29 } 30 else 31 { 32 up=k;low=1; 33 while(low<=up) 34 { 35 int mid=(up+low)/2; 36 int num=ok(mid,k); 37 if(num>=n) {up=mid-1;ans=mid;} 38 else low=mid+1; 39 } 40 } 41 42 cout<<ans<<endl; 43 } 44 return 0; 45 }
?
轉載于:https://www.cnblogs.com/khbcsu/p/3895746.html
總結
以上是生活随笔為你收集整理的codeforces 165B(Burning Midnight Oil)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你会看《小猪佩奇过大年》这部电影吗,为什
- 下一篇: 《相和歌辞·王昭君二首》第三句是什么