holiday/8.20/B.cpp
2022-08-22 22:19:52 +08:00

193 lines
2.1 KiB
C++

#include <iostream>
#include<cstdio>
#include<algorithm>
#include <cmath>
#include<cstring>
using namespace std;
const int N=1e6+5;
char s[N],sub[N];
int a[11]= {0};
int l[N];
int su[N];
int cnt;
int sublen;
int len;
//void init(int n)
//{
//
//}
void ce()
{
printf("\n(%d)\n",len) ;
for(int i=0; i<10; i++)
{
printf("%d(%d) ",i,a[i]);
}
printf("\n");
for(int i=1; i<=cnt; i++)
{
printf("%d",l[i]);
}
}
bool cmp(int b)
{
for(int i=0; i<sublen; i++)
{
if(su[i]>l[i+b])
{
return 0;
}
else if(su[i]<l[i+b])
{
return 1;
}
}
return 1;
}
//void useless()
//{
// cnt=1;
// for(int i=0; i<=9; i++)
// {
// while(a[i])
// {
// a[i]--;
// l[++cnt]=i;
//// break;//wrong
// }
// }
// for(int i=0; i<sublen; i++)
// {
// l[cnt+1+i]=su[i];
// }
// int i;
// for(i=1; i<=cnt; i++)
// {
// if(cmp(i))
// {
// break;
// }
// printf("%d",l[i]);
// }
// printf("%s",sub);
// for(; i<=cnt; i++)
// {
// printf("%d",l[i]);
// }
//}
int wei(int n)
{
int sum=0;
int len=n;
while(len>0)
{
sum++;
len/=10;
}
int len2=n-sum;
int sum2=0;
while(len2>0)
{
sum2++;
len2/=10;
}
if(sum==sum2)
{
return n-sum;
}
else
{
return n-sum+1;
}
}
bool ling()
{
for(int i=1;i<sublen;i++)
{
if(su[i]>0)
{
return 0;
}
}
return 1;
}
int main()
{
scanf("%s%s",&s,&sub);
len=strlen(s);
for(int i=0; i<len; i++)
{
a[s[i]-'0']++;
}
len=wei(len);
int y=len;
while(y>0)
{
a[y%10]--;
y/=10;
}
sublen=strlen(sub);
bool fir=1;
for(int i=0; i<sublen; i++)
{
su[i]=sub[i]-'0';
a[su[i]]--;
}
int now=0;
while(su[0]==su[now]&&now<sublen-2)
{
now++;
if(su[0]!=su[now])
{
fir=su[now]<su[0];
}
}
bool vis=0;
if(a[0]||su[0]==0)
for(int i=1; i<=9; i++)
{
if(a[i])
{
if(su[0]!=0&&su[0]<=i&&(su[0]<i||ling()))//i->a[i]
{
vis=1;
printf("%s",sub);
break;
}
a[i]--;
printf("%d",i);
break;
}
}
for(int i=0; i<=9; i++)
{
if(!vis&&su[0]==i&&fir)
{
printf("%s",sub);
}
while(a[i])
{
printf("%d",i);
a[i]--;
}
if(!vis&&su[0]==i&&!fir)
{
printf("%s",sub);
}
}
/*
123456789012345678901
125860
2564168486416487447411002654
5416846
30024
20
*/
// ce();
return 0;
}