万圣节派对

Time Limit: 1000ms
Memory Limit: 128000KB
64-bit integer IO format:      Java class name:

 

万圣节有一个Party,XadillaX显然也要去凑热闹了。因为去凑热闹的人数非常庞大,几十W的数量级吧,自然要进场就需要有门票了。很幸运的,XadillaX竟然拿到了一张真·门票!这真·门票的排列规则有些奇怪:

  1. 门票号是由0~6组成的六位数(0~6这几个数字可重用)

  2. 每一个门票号的每一位不能有三个连续相同的数字(如123335是不行的)

  3. 每一个门票号相邻的两位相差必须在四以下(≤4)(如016245是不行的)

 

 

Input

第一行一个n,代表输入个数
接下去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\n",i);
51         }
52         printf("\n");
53     }
54 }

 

posted @ 2016-05-19 20:51  Vmetrio  阅读(228)  评论(0编辑  收藏  举报