CodeForces

来源:互联网 发布:手机装潢设计软件 编辑:程序博客网 时间:2024/04/20 10:27


点击打开链接


题意:  给你一个n 一个m

 然后然你求最大的v 

v需要满足  v每次递减为 v/m   这个数列的和大于等于n


题解:

二分枚举v 就行了。


#include<iostream>#include<string>#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxn=2020;int n,k,T,a,b;int judge(int x){    int t=0;    while(x){        t+=x;        x/=k;    }//printf("%d ~~~\n",t);    return t;}int main(){    scanf("%d %d",&n,&k);        int l=1,r=n;        while(l<=r){            int mid=(l+r)/2;//printf("%d %d %d ~\n",l,r,judge(mid));            if(judge(mid)<n) l=mid+1;            else r=mid-1;        }        printf("%d\n",l);    return 0;}



0 0