/*
门票号是由0~6组成的六位数(0~6这几个数字可重用)
过滤每一个门票号
第一个过滤条件:每一位不能有三个连续相同的数字(如123335是不行的)
第二个过滤条件:每一个门票号相邻的两位相差必须在四以下(≤4)(如016245是不行的)
输入
第一行一个n,代表输入个数
接下去n行,每行两个数字x,y(x <= y)
输出
对于每个测试,输出x到y之间的门票编号。每个测试结尾之间空行。
样例输入
2
001001 001002
001011 001012
样例输出
1
001001
001001
001011
001012
*/
#include<cstdio>
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
int t, a, b;
int num[6];
scanf("%d",&t);
while (t--)
{
scanf("%d %d", &a, &b);
for (int i = a; i <= b; i++)
{
num[0] = i % 10;
num[1] = i / 10 % 10;
num[2] = i / 100 % 10;
num[3] = i / 1000 % 10;
num[4] = i / 10000 % 10;
num[5] = i / 100000 % 10;
bool ok = true;
for (int j = 0; j < 4; j++)
{
if (num[j] == num[j + 1] && num[j + 1] == num[j + 2])
{
ok = false;
break;
}
if ((num[j] > 6) || (num[j + 1] > 6) || (num[j + 2] > 6) || fabs((num[j] - num[j + 1])) > 4 || fabs((num[j + 1] - num[j + 2])) > 4)
{
ok = false;
break;
}
}
if (ok)
{
printf("%.6d\n", i);
}
}
if (t)
{
printf("\n");
}
}
return 0;
}
门票号是由0~6组成的六位数(0~6这几个数字可重用)
过滤每一个门票号
第一个过滤条件:每一位不能有三个连续相同的数字(如123335是不行的)
第二个过滤条件:每一个门票号相邻的两位相差必须在四以下(≤4)(如016245是不行的)
输入
第一行一个n,代表输入个数
接下去n行,每行两个数字x,y(x <= y)
输出
对于每个测试,输出x到y之间的门票编号。每个测试结尾之间空行。
样例输入
2
001001 001002
001011 001012
样例输出
1
001001
001001
001011
001012
*/
#include<cstdio>
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
int t, a, b;
int num[6];
scanf("%d",&t);
while (t--)
{
scanf("%d %d", &a, &b);
for (int i = a; i <= b; i++)
{
num[0] = i % 10;
num[1] = i / 10 % 10;
num[2] = i / 100 % 10;
num[3] = i / 1000 % 10;
num[4] = i / 10000 % 10;
num[5] = i / 100000 % 10;
bool ok = true;
for (int j = 0; j < 4; j++)
{
if (num[j] == num[j + 1] && num[j + 1] == num[j + 2])
{
ok = false;
break;
}
if ((num[j] > 6) || (num[j + 1] > 6) || (num[j + 2] > 6) || fabs((num[j] - num[j + 1])) > 4 || fabs((num[j + 1] - num[j + 2])) > 4)
{
ok = false;
break;
}
}
if (ok)
{
printf("%.6d\n", i);
}
}
if (t)
{
printf("\n");
}
}
return 0;
}