万圣节派对

 /*
门票号是由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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值