#include <stdio.h>
#include <stdlib.h>
#define _DEBUG 1
#define MAXN 65
int check(int *arr,int n){//寻找重复数位置
int i,pos=-1;
for(i=n-1;i>=0;i--){
if(arr[i]==arr[i-1])
return i;
}
return -1;//不存在重复数
}
void set0or1(int *arr,int startPos){
int flag=0;
for(int i=startPos;i>=0;i--){
arr[i]=flag;
flag=1-flag;
}
}
long GetNotRepeatNum(long num){
int arr[MAXN]={0};
int count=0;
while(num){//将数字存到数组中
arr[count++]=num%10;
num/=10;
}
int pos;//重复数的位置
while((pos=check(arr,count))!=-1){
if(arr[pos]==9){
arr[pos+1]++;
if(pos+1==count){//需要进位1
count++;
}
set0or1(arr,pos);
}else{
arr[pos-1]++;
set0or1(arr,pos-2);
}
}
long nnum=0;
for(int i=count-1;i>=0;i--){
nnum=nnum*10+arr[i];
}
return nnum;
}
int main(){
int num;
while(scanf("%d",&num)!=EOF){
printf("%d\n",GetNotRepeatNum(num+1));
}
}
1
最新推荐文章于 2024-01-16 11:57:09 发布