admin管理员组

文章数量:815317

1199: 英雄无敌3(2)

1199: 英雄无敌3(2)
Time Limit: 1 Sec Memory Limit: 128 MB
[Submit][Status][Web Board]
Description

英雄无敌3中的兽人觉得人类的星期制度很好,要模仿这个制度,但他们大多都很愚蠢,他们搞不明白人类的星期制度。虽然他们出了很多题目(给出日期,输出星期几),但不知道答案,作为兽人的人类朋友,你可以帮助他们吗?(为了表示方便,0代表星期天,1代表星期一,2代表星期二,3代表星期三,4代表星期四,5代表星期五,6代表星期六)

Input

第一行输入一个数t,代表题目数。

每个题目有3个正整数分别为y(0<y<=2013), m(0=<m<=20), d(0<=d<=40)分别代表年,月,日。

Output

对于每组案例,输出一个整数,代表星期几(当然由于兽人很愚蠢,他们给出的日期有可能是不存在的,对于这种情况,请输出-1)

Sample Input

1
2013 4 25

Sample Output

4

HINT

Source

AC代码~:

#include <stdio.h>
long long a[2015]= {0};
int b[13]= {0,31,0,31,30,31,30,31,31,30,31,30,31};//月份天数,2月暂时初始为0
//判断是否为闰年
bool leapyear(int y)
{if((y%4==0&&y%100!=0)||y%400==0)return true;return false;
}
int main()
{a[2] =365;for(int i = 3; i <= 2013; i++)//a[i]存前i年前(不包括i)有多少天{if(leapyear(i-1))a[i] += a[i-1]+366;elsea[i] += a[i-1]+365;}int y,m,d,t;scanf("%d",&t);while(t--){scanf("%d%d%d",&y,&m,&d);if(leapyear(y))b[2] = 29;elseb[2] = 28;if(d > b[m]||m==0||d==0||m>12)//这里要想全面printf("-1\n");else{long long sum = a[y];for(int i = 1; i < m; i++)sum += b[i];sum += d;printf("%d\n",sum%7);}}return 0;
}

本文标签: 1199 英雄无敌3(2)