#include <cstdio>
#include <cstring>
#include <cstdlib>
int getNext(int num){
char s[50];
sprintf(s, "%d", num);
int len = strlen(s);
for (int pass = 1; pass < len; ++pass){
int isSorted = true;
for (int i = 0; i < len - pass; ++i){
if (s[i] < s[i + 1]){
s[i] = s[i] ^ s[i + 1];
s[i + 1] = s[i] ^ s[i + 1];
s[i] = s[i] ^ s[i + 1];
isSorted = false;
}
}
if (isSorted){
break;
}
}
int max = atoi(s);
//printf("max=%d\n", max);
for (int i = 0; i < len / 2; ++i){
s[i] = s[i] ^ s[len - i - 1];
s[len - i - 1] = s[i] ^ s[len - i - 1];
s[i] = s[i] ^ s[len - i - 1];
}
return max - atoi(s);
}
int main(){
int num;
scanf("%d", &num);
int res = num;
int pre = 0;
while ((res = getNext(res)) != pre){
pre = res;
}
printf("result=%d\n", res);
return 0;
}
算法竞赛入门经典 5.3.1 “6174”问题
最新推荐文章于 2024-06-22 12:25:04 发布