首页 > 其他 > 详细

codeforces 165B(Burning Midnight Oil)

时间:2014-08-06 22:37:52      阅读:389      评论:0      收藏:0      [点我收藏+]

【题意描述】

本题就是给定代码任务为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 }

 

codeforces 165B(Burning Midnight Oil),布布扣,bubuko.com

codeforces 165B(Burning Midnight Oil)

原文:http://www.cnblogs.com/khbcsu/p/3895746.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!