• 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 }
  • 相关阅读:
    python-杂烩
    24 Python 对象进阶
    23 Python 面向对象
    22 Python 模块与包
    21 Python 异常处理
    20 Python 常用模块
    18 Python 模块引入
    2 Python 基本语法
    1 Python 环境搭建
    3 Python os 文件和目录
  • 原文地址:https://www.cnblogs.com/khbcsu/p/3895746.html
Copyright © 2020-2023  润新知