思路:
直接暴力枚举,判断细节
c o d e code code
#include<iostream>
#include<cstdio>
using namespace std;
string s;
int k;
bool com(string s, string ss)
{
if(s.size()>ss.size())
return 1;
if(s.size()<ss.size())
return 0;
return s>=ss;
}
int main()
{
cin>>s;
scanf("%d", &k);
if(k==0)
{
string ans="999999999999999999";
string ss;
ss="";
for(char c='0'; c<='9'; c++)
{
for(int j=0; j<s.size(); j++)
ss=ss+c;
if(ss[0]!='0'&&com(ss, s)&&com(ans, ss))
ans=ss;
ss="";
for(int j=0; j<=s.size(); j++)
ss=ss+c;
if(ss[0]!='0'&&com(ss, s)&&com(ans, ss))
ans=ss;
ss="";
}
cout<<ans;
}
else
{
string ans="999999999999999999";
string ss;
ss="";
for(char c='0'; c<='9'; c++)
{
for(int j=0; j<s.size(); j++)
ss=ss+c;
if(ss[0]!='0'&&com(ss, s)&&com(ans, ss))
ans=ss;
ss="";
for(int j=0; j<=s.size(); j++)
ss=ss+c;
if(ss[0]!='0'&&com(ss, s)&&com(ans, ss))
ans=ss;
ss="";
}
for(int i=0; i<=s.size(); i++)
{
for(char c='0'; c<='9'; c++)
{
for(char c1='0'; c1<='9'; c1++)
{
if(c==c1)
continue;
string ss;
ss="";
if(i!=s.size())
for(int j=0; j<s.size(); j++)
{
if(j!=i)
ss=ss+c1;
else
ss=ss+c;
}
if(ss[0]!='0'&&com(ss, s)&&com(ans, ss))
ans=ss;
ss="";
for(int j=0; j<s.size()+1; j++)
{
if(j!=i)
ss=ss+c1;
else
ss=ss+c;
}
if(ss[0]!='0'&&com(ss, s)&&com(ans, ss))
ans=ss;
}
}
}
cout<<ans;
}
return 0;
}