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)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 你会看《小猪佩奇过大年》这部电影吗,为什
- 下一篇: jquery-tmpl 插件