求助 # 861 div 2 C题
  • 板块学术版
  • 楼主Sherlock114514
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/4/1 11:18
  • 上次更新2023/10/23 19:51:10
查看原帖
求助 # 861 div 2 C题
795142
Sherlock114514楼主2023/4/1 11:18

图片中是我的详细思路 下面是代码:

#include<bits/stdc++.h>
using namespace std;
# define ll unsigned long long
#define endl '\n'
  vector<char> v;
   int n=0;
void solve()
{

    v.clear();
   string  l,r;  cin>>l>>r;
 if(l.size()==1) {cout<<l<<endl; return ;}//���
   if(l.size()<r.size())
   {
      for(int i=0;i<l.size();++i)
          cout<<9;
      cout<<endl;
       return ;
   }
    if(l==r) {cout<<l<<endl; return ;}
   if(r[0]-l[0]>=2)
   {
       for(int i=0;i<l.size();++i)
       {
           cout<<l[0]-'0'+1;
       }  cout<<endl;
      return;
  }

        int flag=99;
          string ans="";
          ll L=stoll(l),R=stoll(r);
         // cout<<"L"<<l<<"R"<<r<<endl;
          for(int i=0;i<l.size();++i)
      {
               v.push_back(l[i]);
              sort(v.begin(),v.end());
              char small=v.front(), big=v.back();
              //cout<<small<<" "<<big<<endl;
              string  qian=l.substr(0,i+1);
              string    hou(l.size()-i-1, big);
                   if(hou!="")
                  qian=qian+hou;
                  else qian=qian;

                   ll rr=big-small;
               ll  t1=0;
              t1= stoull(qian);

              if(t1>=L&& t1<=R )
           {

               if(rr<flag)
               {

               ans=qian;
               flag=rr;

               }
           }
      }
         v.clear();

   for(int i=0;i<r.size();++i)
     {
                v.push_back(r[i]);
              sort(v.begin(),v.end());
              char small=v.front(), big=v.back();
              string  qian=r.substr(0,i+1);
              string    hou(r.size()-i-1, small);
                   if(hou!="")
                  qian=qian+hou;
                  else qian=qian;

                     ll rr=big-small;
                  ll  t1=stoull(qian);
              if(t1>=L&& t1<=R )
             {
                    if(rr<flag)
               {

               ans=qian;
               flag=rr;
               }

           }
    }    cout<<ans<<endl;


}
int main()
{
   //  std::ios_base::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);
     int T=1;
    cin>>T;

   while(T--)
   {
       solve();
   }
}
2023/4/1 11:18
加载中...