【坑】高数满分—pow的问题
Description
众所周知,qm的高数总是满分。这一天数学白痴锦鱼拿着一道数学题来问qm,qm不屑做这种简单的题,于是把这道题丢给你来完成。题目是这样的:给定a、b、c三个整数,求最大的整数x,满足xa+b*x<=c,其中xa表示x的a次方,b*x表示b乘以x。
Input
第一行输入三个整数a(1<=a<=10),b(0<=b<=1018),c(0<=c<=1018),分别对应题目中a、b、c三个整数。
Output
输出一个整数,表示所求的最大的x。
Sample Input
2 3 4
Sample Output
1
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
ll a,b,c;
ll qkpow(ll x,int p)
{
if(p==0) return 1;
if(p==1) return x;
ll y=qkpow(x,p>>1);
y=y*y;
if(p&1)
y=y*x;
return y;
}
int main()
{
cin>>a>>b>>c;
ll l=0,r=(ll)pow((double)c,1.0/a);
//if(b!=0) r=c/b;
//r=min(r,(ll)pow(c,1.0/a));
while(r-l>1)
{
ll mid=(r+l)>>1;
if(qkpow(mid,a)+b*mid<=c)
{
l=mid;
}
else
{
r=mid;
}
}
if(qkpow(r,a)+r*b<=c) cout<<r;
… Read the rest