[hdu 6288]缺失的資料範圍 精度特殊處理(2018女生賽
阿新 • • 發佈:2018-12-16
/* hdu6288 by zhuhua 比賽的時候又哇又t一下午 回來終於a掉了,還是0s( •̀ ω •́ )y 精度問題。如果爆炸的處理很重要。 因為乘方始終容易爆所以特別注意44\45行那裡的處理。 */ #include<bits/stdc++.h> using namespace std; typedef long long LL; LL a,b,k; LL quick_pow(LL x,LL y){ LL res=1LL; while(y){ if(y&1)res*=x; if(res>=k)return k+1;//這裡光有這裡沒用,但是可以加速AC x*=x; y>>=1; }return res; } LL findx(LL mid){ LL i=1LL,temp=2LL; while(temp<mid){ temp*=2LL; i++; } return i; } int main(){ int t; cin>>t; while(t--){ scanf("%I64d%I64d%I64d",&a,&b,&k); LL l=1,r=pow(k,1.0/a),ans=l; while(l<=r){ LL mid=(l+r)>>1; LL tt=findx(mid); LL sma=quick_pow(tt,b); //這裡最重要沒有就哇給你看 LL big=k; LL orz=quick_pow(mid,a); if(orz<=0)big=-1; else big/=orz; if(sma<=big){ ans=mid; l=mid+1; } else r=mid-1; } printf("%I64d\n",ans); } return 0; }