安博士给了小明一个整数X,然后让小明找一个整数Y,要求Y中每个数字出现的次数和X中每个数字出现的次数相同,并且同时要求X<Y,满足要求的Y可能不止一个,请输出所有满足要求的数中最小的那个。
输入
输入一个整数X。
输出
输出一个整数Y,如果找不到满足要求的数,输出0。
样例输入 Copy
156
样例输出 Copy
165
提示
1<=X<=10^6。
样例2输入:880
样例2输出:0
提交
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
char a[10];
cin>>a;
int flag=0;
int sum=0;
char temp;
for (int i=strlen(a)-1;i>0;i--)
{
if (a[i]>a[i-1])
{
flag=1;
sum=i-1;
break;
}
}
if (!flag)
{
printf("0");
}
else
{
char min;
int num=strlen(a)-1;
int flag1=0;
for (int i=strlen(a)-1;i>sum+1;i--)
{
if (a[i]>a[sum]&&flag1==0)
{
min=a[i];
num=i;
flag1=1;
}
else
{
if (min>a[i]&&flag1!=0)
{
min=a[i];
num=i;
}
}
}
if (!flag1)
{
temp=a[sum];
a[sum]=a[sum+1];
a[sum+1]=temp;
}
else
{
temp=a[sum];
a[sum]=a[num];
a[num]=temp;
}
for (int i=sum+1;i<strlen(a)-1;i++)
{
for(int j=sum+1;j<strlen(a)-i+sum;j++)
{
if (a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
cout<<a;
}
return 0;
}