HDU 2133 What day is it(日期转换)

来源:互联网 发布:珠海广电网络 编辑:程序博客网 时间:2024/05/22 19:19

What day is it

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4878    Accepted Submission(s): 1431

Problem Description
Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me what day it is ?

Input
There are multiply cases.
One line is one case.
There are three integers, year(0<year<10000), month(0<=month<13), day(0<=day<32).

Output
Output one line.
if the date is illegal, you should output "illegal". Or, you should output what day it is.

Sample Input
2007 11 17

Sample Output
Saturday

Author
LGX
 
Source
HDU 2007-11 Programming Contest_WarmUp

题解:其实公元元年1月1号是周一,然后模拟吧。

AC代码
#include<iostream>#include<cstdlib>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<cstdlib>#include<iomanip>#include<algorithm>#include<time.h>typedef long long LL;using namespace std;int f(int y){return y%400==0||y%100!=0&&y%4==0;}int main(){int i,y,m,d;int t[2][31]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};char date[8][30]={{"Sunday"},{"Monday"},{"Tuesday"},{"Wednesday"},{"Thursday"},{"Friday"},{"Saturday"}};while(cin>>y>>m>>d){if(!f(y)&&m==2&&d>28||y==0||m==0||d==0||d>t[f(y)][m]||m>12){printf("illegal\n");}else{for(i=1;i<y;i++)  d+=365+f(i);   for(i=1;i<m;i++)  d+=t[f(y)][i];  d%=7;  printf("%s\n",date[d]);}}    return 0;}


 
1 0
原创粉丝点击