#include<stdio.h> int a[5]; int k=0; int hei[10000]; int len=0; int flag; int pos; int main() { void print(int begin,int end);//重排求差终止,打印输出循环圈 void chong_pai(int n,int *p);//重排 void qiu_cha(int n);//求差 void cun_chu(int cha);//求得的差之前没出现过,就存储 int exit_1(int n);//确定开始循环的位置 void pan_duan(int cha);//判断求得的差要存储还是输出 int n; int i; while(scanf("%d",&n)!=EOF) { qiu_cha(n); len=0; k=0; } return 0; } void print(int begin,int end) { void chong_pai(int n,int *p); void qiu_cha(int n); void cun_chu(int cha); int exit_1(int n); void pan_duan(int cha); int i; printf("["); for(i=begin;i<end-1;i++) { printf("%d,",hei[i]); } printf("%d]\n",hei[len-1]); } int exit_1(int cha) { void print(int begin,int end); void chong_pai(int n,int *p); void qiu_cha(int n); void cun_chu(int cha); void pan_duan(int cha); int i; for(i=0;i<len;i++) { if(hei[i]==cha) { pos=i; return 1; } } if(i==len) { flag=0; return 0; } } void pan_duan(int cha) { void print(int begin,int end); void chong_pai(int n,int *p); void qiu_cha(int n); void cun_chu(int cha); int exit_1(int n); if(len==0) cun_chu(cha); else { if(exit_1(cha)) print(pos,len); else cun_chu(cha); } } void chong_pai(int n,int *p) { void print(int begin,int end); void qiu_cha(int n); void cun_chu(int cha); int exit_1(int n); void pan_duan(int cha); int i; int j; int t; k=0; while(n) { *(p+k)=n%10; n=n/10; k++; } if(k<5) for(i=k;i<5;i++) *(p+i)=0; for(i=0;i<5;i++) for(j=i+1;j<5;j++) { if(*(p+i)>*(p+j)) { t=*(p+i); *(p+i)=*(p+j);//升序 *(p+j)=t; } } } void qiu_cha(int n) { void print(int begin,int end); void chong_pai(int n,int *p); void cun_chu(int cha); int exit_1(int n); void pan_duan(int cha); int max; int min; int i; int cha; chong_pai(n,a); min=0; for(i=0;i<5;i++) min=min*10+a[i]; max=0; for(i=4;i>=0;i--) max=max*10+a[i]; cha=max-min; pan_duan(cha); } void cun_chu(int cha) { void print(int begin,int end); void chong_pai(int n,int *p); void qiu_cha(int n); int exit_1(int n); void pan_duan(int cha); hei[len++]=cha; qiu_cha(cha); }