赞
踩
• 乘法可能溢出 64 位整数,需要特殊处理。
• 求 ⌈log2 n⌉ 时不应使用实数计算,这将带来误差,应当使用整数计算。 时间复杂度 O(log2 k)。
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #define Max int(1e9+1)
- int t,a,b;
- ll k;
- inline ll mul(ll a,ll b){
- if(!a||!b)return 0;
- if(a>(k+5)/b)return k+5;
- a*=b;
- return a>k+5?k+5:a;
- }
- inline ll getpow(ll a,int b){
- ll t=1;
- while(b--)t=mul(t,a);
- return t;
- }
- inline int getlog(ll n){
- ll o=n;
- while(o%2==0)o/=2;
- int t=0;
- while(n>1)n/=2,t++;
- if(o>1)t++;
- return t;
- }
- ll computer(ll n)
- {
- return mul(getpow(n,a),getpow(getlog(n),b));
- }
- int main()
- {
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d%lld",&a,&b,&k);
- ll le=2,ri=k,mid,ans=1;
- while(le<=ri)
- {
- mid=(le+ri)/2;
- if(computer(mid)<=k)
- {
- ans=mid;
- le=mid+1;
- }
- else
- ri=mid-1;
- }
- printf("%lld\n",ans);
- }
- }
-
比赛的时候看着大佬们都AC了,心里万分焦急,想想自己16、17女生赛的题都没有补就去比赛,想想自己也是可笑,不知道哪里的勇气觉得自己可以AC。恩,以后要开始注重补题这一环节了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。