1 /*描述 2 万圣节有一个Party,XadillaX显然也要去凑热闹了。因为去凑热闹的人数非常庞大,几十W的数量级吧,自然要进场就需要有门票了。 3 很幸运的,XadillaX竟然拿到了一张真·门票!这真·门票的排列规则有些奇怪: 4 门票号是由0~6组成的六位数(0~6这几个数字可重用) 5 每一个门票号的每一位不能有三个连续相同的数字(如123335是不行的) 6 每一个门票号相邻的两位相差必须在四以下(≤4)(如016245是不行的) 7 输入 8 第一行一个n,代表输入个数 9 接下去n行,每行两个数字x,y(x <= y) 10 输出 11 对于每个测试,输出x到y之间的门票编号。每个测试结尾之间空行。 12 样例输入 13 2 14 001001 001002 15 001011 001012 16 样例输出 17 001001 18 001002 19 20 001011 21 001012 22 */ 23 #include<stdio.h> 24 #include<string.h> 25 #include<stdlib.h> 26 int main() 27 { 28 char s[7], c[7]; 29 int n, i, a, b; 30 scanf("%d",&n); 31 getchar(); 32 while(n--) 33 { 34 scanf("%s%s",s,c); 35 getchar(); 36 while(strcmp(s , c) <= 0) 37 { 38 a=1; b=1; 39 for(i = 0; i < 4; i++) 40 { 41 if(s[i]==s[i+1] && s[i+1]==s[i+2]) 42 { 43 a = 0; 44 break; 45 } 46 } 47 for(i = 1; i < 5; i++) 48 { 49 if(abs(s[i]-s[i-1]) > 4 || abs(s[i]-s[i+1]) > 4) 50 { 51 b = 0; 52 break; 53 } 54 } 55 if(a*b) 56 printf("%s\n",s); 57 s[5]+=1; 58 for( i = 5; i >= 0; i--) 59 { 60 if(s[i] == 55) 61 { 62 s[i] = 48; 63 s[i-1] += 1; 64 } 65 else 66 break; 67 } 68 } 69 printf("\n"); 70 } 71 return 0; 72 }