您的位置:首页 > 其它

NYOJ 733 万圣节派对

2017-07-25 08:54 204 查看

万圣节派对

时间限制:1000 ms  |  内存限制:65535 KB难度:1描述万圣节有一个Party,XadillaX显然也要去凑热闹了。因为去凑热闹的人数非常庞大,几十W的数量级吧,自然要进场就需要有门票了。很幸运的,XadillaX竟然拿到了一张真·门票!这真·门票的排列规则有些奇怪:门票号是由0~6组成的六位数(0~6这几个数字可重用)
每一个门票号的每一位不能有三个连续相同的数字(如123335是不行的)
每一个门票号相邻的两位相差必须在四以下(≤4)(如016245是不行的)
输入第一行一个n,代表输入个数
接下去n行,每行两个数字x,y(x <= y)输出对于每个测试,输出x到y之间的门票编号。每个测试结尾之间空行。样例输入
2
001001 001002
001011 001012
样例输出
001001
001002

001011
001012
这道题在细节上要注意数字不能超过6,感觉我第一次写的比较麻烦,没有把数字拆开逐个进行比较的方法更容易,降低犯错的次数!这是我写的,经过了无数次的改良哭唧唧!感觉一不小心就犯错了。#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int a,b;
scanf("%d %d",&a,&b);
for(int i=a;i<=b;i++)
{
int x=i;
if(i%10>6||i/10%10>6||i/100%10>6||i/1000%10>6||i/10000%10>6||i/100000%10>6)
continue;
if(i%1000%111==0||i/10%1000%111==0||i/100%1000%111==0||i/1000%111==0)
{
continue;
}
else
{
if(fabs(i%10-i/10%10)>4||fabs(i/10%10-i/100%10)>4||fabs(i/100%10-i/1000%10)>4||fabs(i/1000%10-i/10000%10)>4||fabs(i/10000%10-i/100000%10)>4)
continue;
}
int j,m,s[6]={0};
for(j=0;j<6;j++)
{

8941
s[j]=i%10;
i=i/10;
}
for(j=5;j>=0;j--)
{
printf("%d",s[j]);
}
printf("\n");
i=x;
}
printf("\n");
}
return 0;
}这是把各位数上的数字先拆分开,一次放在数组里比较。#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,x,y,flag,a[10];
scanf("%d",&n);
while(n--)
{
scanf("%d %d",&x,&y);
for(i=x; i<=y; i++)
{
flag=0;
a[0]=i/100000;
a[1]=i/10000%10;
a[2]=i/1000%10;
a[3]=i/100%10;
a[4]=i/10%10;
a[5]=i%10;
for(j=0; j<6; j++)
if(a[j]>6)
{
flag=1;
break;
}
for(j=0; j<4; j++)
if(a[j]==a[j+1]&&a[j]==a[j+2])
{
flag=1;
break;
}
for(j=0; j<5; j++)
if(fabs(a[j]-a[j+1])>4)
{
flag=1;
break;
}
if(flag==0)
{
for(j=0; j<6; j++)
printf("%d",a[j]);
printf("\n");
}
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: