【问题描述】
牛顿想找爱因斯坦玩(牛顿居然遇上了爱因斯坦。。。。。。),然而爱因斯坦只在幸运日出门,爱因斯坦认为的幸运日是这样的:给定一年(该年一定是平年)中的第X 天,把这一天表示成a 月b 日,第c 个星期(定义该年的第1 天到第7 天为第1 个星期,以此类推),如果a 是2 的倍数,b 是3 的倍数,c 是4 的倍数,那么爱因斯坦认为这天就是幸运日。牛顿表示还没吃早饭,希望好心的你帮助他判断某一天是不是幸运日。
【输入数据】
输入文件lucky.in:第一行为一个整数 T,表示测试数据组数;接下来T 行,每行表示一组测试数据;第2 到T+1 行,每行为一个整数X,含义如题目描述所示。
【输出数据】
输出文件lucky.out:共有T 行,每行为“Y”或“N”(不含引号),Y 表示该天为幸运日,N 表示不是幸运日。
【输入输出样例】
【样例数据说明】
一年中的第34 天是2 月3 日,第5 个星期,不是幸运日。一年中的第55 天是2 月24 日,第8 个星期,是幸运日。
【数据范围】
对于 100% 的数据,1≤T≤50,1≤X≤365
#include<bits/stdc++.h>
using namespace std;
int n,a,x,b,c,i,j;
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a=1;
scanf("%d",&x);
if(x%7==0) c=x/7;
else c=(x/7)+1;
for(j=1;j<=12;j++)
{
if(x==d[j]) a=j,b=d[j];
else if(x>d[j])
{
x-=d[j];
a=(j+1);
}
else if(x<=d[j]) b=x;
}
if(a%2==0&&b%3==0&&c%4==0) printf("Y\n");
else printf("N\n");
}
return 0;
}