二分,为什么不行啊
查看原帖
二分,为什么不行啊
372430
_WuHu_楼主2022/7/16 16:41
#include<bits/stdc++.h>
using namespace std;  
#define ll unsigned long long
ll t,n;
map <ll,int>a;
ll f(ll n){
    ll s,ans=0,num,temp=0;
    while(1){
        if(n==0){
            break;
        }else{
            num=n%10;
            ans*=10;
            ans+=num;
            n/=10;
        }   
    }
    return ans; 
}
void check(ll l,ll r,ll i){
    if(l>=r){
        printf("%lld\n",f(a[i-1]));
        return;
    }
    ll mid=(l+r)/2;
    a[i]=f(mid);
    //printf(" mid:%lld       a[%lld]%lld\n",mid,i,a[i]);
    if(a[i]>n){
        check(l,mid,i+1);
    }else{
        check(mid+1,r,i+1);
    }
    //return ;
}
int main(){
    cin>>t;
    a.clear();
    for(ll i=1;i<=t;i++){
        cin>>n;
        check(1,n,1);
    }
    return 0;
}
2022/7/16 16:41
加载中...