NYOJ-733 万圣节派对

本文介绍了一个用于生成符合特定规则的万圣节派对门票的算法,包括门票号的组成规则、数字限制以及相邻数字之间的差异要求。通过算法实现,可以高效地生成指定范围内的有效门票号码。

万圣节派对

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述

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

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

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

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

输入
第一行一个n,代表输入个数
接下去n行,每行两个数字x,y(x <= y)
输出
对于每个测试,输出x到y之间的门票编号。每个测试结尾之间空行。
样例输入
2
001001 001002
001011 001012
样例输出
001001
001002

001011
001012


c in,cout不过


              

01.#include<iostream>
02.#include<string>
03.#include<cmath>
04.#include<cstdio>
05.using namespace std;
06.int main()
07.{
08.int n;
09.scanf("%d",&n);
10.while(n--)
11.{
12.string s;
13.int t1,t2;
14.scanf("%d%d",&t1,&t2);     
15.for(int i=t1;i<=t2;i++)
16.{
17.int f1=1,f2=1,f3=1;
18.s[0]=i/100000+'0';
19.s[1]=i/10000%10+'0';
20.s[2]=i/1000%10+'0';
21.s[3]=i/100%10+'0';
22.s[4]=i/10%10+'0';
23.s[5]=i%10+'0';     
24.for(int j=0;j<6;j++)
25.if(s[j]-'0'>6)
26.{
27.f3=0;break;
28.}
29.for(int j=0;j<4;j++)
30.if(s[j]-s[j+1]==0&&s[j]-s[j+2]==0)
31.{
32.f2=0;break;
33.}
34.for(int j=0;j<5;j++)
35.if(fabs(s[j]-s[j+1])>4)
36.{
37.f1=0;break;
38.}
39.if(f1==1&&f2==1&&f3==1)
40.{  
41.for(int j=0;j<6;j++)
42.printf("%c",s[j]);
43.printf("\n");
44.}
45.}
46.printf("\n");
47.}
48.return 0;
49.}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值