Description
英雄无敌3中的兽人觉得人类的星期制度很好,要模仿这个制度,但他们大多都很愚蠢,他们搞不明白人类的星期制度。虽然他们出了很多题目(给出日期,输出星期几),但不知道答案,作为兽人的人类朋友,你可以帮助他们吗?(为了表示方便,0代表星期天,1代表星期一,2代表星期二,3代表星期三,4代表星期四,5代表星期五,6代表星期六)
Input
第一行输入一个数t,代表题目数。每个题目有3个正整数分别y(0~2013),m[0~20],d[0,40];
Output
对于每组案例,输出一个整数,代表星期几(当然由于兽人很愚蠢,他们给出的日期有可能是不存在的,对于这种情况,请输出-1)
Sample Input
1
2013 4 25
Sample Output
4
此题无需考虑教皇日;
易错点:无需加教皇日,技巧性的存各个月份。
AC代码:
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int y,m,d,t;
cin>>t;
while(t--)
{
cin>>y>>m>>d;
if((y%4==0&&y%100!=0)||y%400==0)
a[2]=29;
else
a[2]=28;
if(m>12||m==0||d>a[m]||d==0)
{
cout<<"-1"<<endl;
continue;
}
if (m ==1 || m == 2)
{ y--;m += 12; }
int c=y/100;
y=y%100;
printf("%d\n",((c/4-2*c+y+y/4+13*(m+1)/5+d-1)%7+7)%7);
}
return 0;
}
/**************************************************************
Problem: 1199
User: HUCM201711
Language: C++
Result: Accepted
Time:44 ms
Memory:1480 kb
****************************************************************/