Time Limit: 1000ms
Memory Limit: 128000KB
64-bit integer IO format: Java class name:万圣节有一个Party,XadillaX显然也要去凑热闹了。因为去凑热闹的人数非常庞大,几十W的数量级吧,自然要进场就需要有门票了。很幸运的,XadillaX竟然拿到了一张真·门票!这真·门票的排列规则有些奇怪:
-
门票号是由0~6组成的六位数(0~6这几个数字可重用)
-
每一个门票号的每一位不能有三个连续相同的数字(如123335是不行的)
-
每一个门票号相邻的两位相差必须在四以下(≤4)(如016245是不行的)
Input
第一行一个n,代表输入个数
接下去n行,每行两个数字x,y(x <= y)
接下去n行,每行两个数字x,y(x <= y)
Output
对于每个测试,输出x到y之间的门票编号。每个测试结尾之间空行。
Sample Input
2 001001 001002 001011 001012
Sample Output
001001 001002 001011 001012
手动模拟...
代码:
1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include <limits.h> 5 #include <algorithm> 6 #include <iostream> 7 #include <ctype.h> 8 #include <iomanip> 9 #include <queue> 10 #include <map> 11 #include <stdlib.h> 12 using namespace std; 13 14 int a[6]; 15 16 int pd(int m) 17 { 18 a[0]=m%10; 19 a[1]=m/10%10; 20 a[2]=m/100%10; 21 a[3]=m/1000%10; 22 a[4]=m/10000%10; 23 a[5]=m/100000%10; 24 int flag=1; 25 for(int i=0; i<4;i++){ 26 if(a[i]>6||a[i+1]>6||a[i+2]>6){ 27 flag=0; 28 break; 29 } 30 if(a[i]==a[i+1]&&a[i]==a[i+2]){ 31 flag=0; 32 break; 33 } 34 if(fabs(double(a[i] - a[i+1]))>4||fabs(double(a[i+1] - a[i+2]))>4){ 35 flag=0; 36 break; 37 } 38 } 39 return flag; 40 } 41 42 int main() 43 { 44 int n,x,y; 45 scanf("%d",&n); 46 while(n--){ 47 scanf("%d%d",&x,&y); 48 for(int i=x; i<=y; i++){ 49 if(pd(i)) 50 printf("%06d ",i); 51 } 52 printf(" "); 53 } 54 }