1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| #include<stdio.h> #include<string.h> #include<stdlib.h>
char str1[5]; char str2[5];
int cmp1(const void *a,const void *b){ return *(char *)a-*(char *)b; }
int cmp2(const void *a,const void *b){ return *(char *)b-*(char *)a; }
void up(char *str1){ qsort(str1,strlen(str1),sizeof(char),cmp1); }
void down(char *str2){ qsort(str2,strlen(str2),sizeof(char),cmp2); }
void swap(char *a,char *b){ char temp=*a; *a=*b; *b=temp; }
void plus(char *str1,char *str2){ char temp[6]={0}; for(int i=0;i<4;i++){ if(str1[i]+str2[i]-2*'0'>9){ temp[i]+=(str1[i]+str2[i]-2*'0')%10+'0'; str1[i+1]++; }else{ temp[i]=str1[i]+str2[i]-'0'; } } swap(&temp[0],&temp[3]); swap(&temp[1],&temp[2]); strcpy(str1,temp); }
int check(char * str1){ for(int i=0;i<strlen(str1)-1;i++){ if(str1[i]!=str1[i+1]) return 0; } return 1; } int main() { int T; scanf("%d",&T); while(T--){ scanf("%s",str1); int cnt=0; while(1){ if(check(str1)){ printf("%d\n",cnt); break; }else{ strcpy(str2,str1); up(str1); down(str2); plus(str1,str2); } cnt++; }
} return 0; }
|