Simple simulations, similar to high-precision addition operations. Understanding test instructions can be.
#include <stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespacestd;Const intMAXN =111;CharS[MAXN];CharJI[MAXN];intGG[MAXN];voidREVSTR (Char*str) { intLen; Char*ptr; Len=strlen (str); PTR= str + len-1; while(str! =ptr) { CharCh ch = *str; *str = *ptr; *ptr = ch; str++; if(str = = PTR) Break; Elseptr--; }}intMain () {intN, I, Y, M; intSB; scanf ("%d", &N); for(SB =0; SB < n; sb++) {memset (s),0,sizeof(s)); Memset (JI,0,sizeof(JI)); scanf ("%s", s); scanf ("%d", &m); Y=strlen (s); intQ =0; for(i =0; i < Y; i++) { if((S[i] >='0'&&s[i] <='9') || (S[i] >='a'&&s[i] <='Z') || (S[i] >='A'&&s[i] <='Z') ) {Ji[q]=S[i]; GG[Q]=i; Q++; } } intBU =0; while(q = =0) {S[y-1]++; printf ("%s\n", s); if(S[y-1] >='0'&&s[y-1] <='9') || (S[y-1] >='a'&&s[y-1] <='Z') || (S[y-1] >='A'&&s[y-1] <='Z') ) {Ji[q]= S[y-1]; GG[Q]= y-1; Q++; } BU++; if(Bu >= m) Break; } if(Bu <m) { for(i =0; I < Q/2; i++) { intt =Gg[i]; Gg[i]= Gg[q-i-1]; Gg[qI1] =T; } revstr (JI); while(1) { intZhi =0; while(1) { if(Zhi = =q) {if(Ji[zhi-1] >='0'&&ji[zhi-1] <='9') {Ji[zhi] ='1'; Gg[zhi] = Gg[zhi-1]; } Else if(Ji[zhi-1] >='a'&&ji[zhi-1] <='Z') {Ji[zhi] ='a'; Gg[zhi] = Gg[zhi-1]; } Else if(Ji[zhi-1] >='A'&&ji[zhi-1] <='Z') {Ji[zhi] ='A'; Gg[zhi] = Gg[zhi-1]; } q++; Break; } if(Ji[zhi] = ='9') {Ji[zhi] ='0'; zhi++; } Else if(Ji[zhi] = ='Z') {Ji[zhi] ='a'; zhi++; } Else if(Ji[zhi] = ='Z') {Ji[zhi] ='A'; zhi++; } Else{ji[zhi]++; Break; } } Zhi= Q-1; for(i =0; i < Y; i++) { intFlag =0; while(Gg[zhi] = = I&&zhi >=0) {printf ("%c", Ji[zhi]); Zhi--; Flag=1; } if(Flag = =0) printf ("%c", S[i]); } printf ("\ n"); Bu++; if(Bu >= m) Break; }} printf ("\ n"); } return 0;}
ZOJ 3490 String successor