hdu 4430——Yukari's Birthday

来源:互联网 发布:mac exe怎么打开方式 编辑:程序博客网 时间:2024/06/05 21:16

二分+枚举

二分写的好挫

#include<stdio.h>#include<math.h>#include<iostream>using namespace std;#define LL __int64#define INF ((LL)1<<60)LL n,ans;LL a,b;LL fun(LL bi,LL r){LL k=1;LL tmp=0;while(r--){k*=bi;tmp+=k;}return tmp;}void get(int len){LL l=1,r=(LL)pow((double)n,1.0/len);//l=1 因为我挫的二分查找写法 if(r<2)//注意点 r=2;LL mid;LL tmp;while(l<r-1){mid=(l+r)/2;LL tmp=fun(mid,len);if(tmp>=n-1)r=mid;elsel=mid;}tmp=fun(r,len);if(tmp==n-1||tmp==n){if(ans>len*r){ans=len*r;a=len;b=r;}}}int main(){while(cin>>n){ans=INF;a=b=1;for(int len=2;len<=45;len++)get(len);if(ans!=INF)cout<<a<<" "<<b<<endl;elsecout<<1<<" "<<n-1<<endl;}return 0;}


原创粉丝点击