比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。
请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:
[82962, 75933, 63954, 61974]
其中数字的先后顺序可以不考虑。
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a,const void *b){
return *(int *)a - *(int *)b;
}
int blackHole(int n){
int a,b,c,d,e;
a = n/10000;
b = n%10000/1000;
c = n%1000/100;
d = n%100/10;
e = n%10;
int in[5],i,j,max;
in[0] = a;
in[1] = b;
in[2] = c;
in[3] = d;
in[4] = e;
qsort(in,5,sizeof(int),cmp);//排序
int tmp = in[4]*10000+in[3]*1000+in[2]*100+in[1]*10+in[0]-//最大最小数的差
in[0]*10000-in[1]*1000-in[2]*100-in[3]*10-in[4];
printf("%d\n",tmp);
getchar();//方便测试数据,按两下空格显示下一个
getchar();
blackHole(tmp);//递归
}
int main(){
int n;
scanf("%d",&n);
blackHole(n);
}
文章由http://www.400815.com原创,转载请注明。