首页 > 代码库 > 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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。