0
点赞
收藏
分享

微信扫一扫

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


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;

}




 

举报

相关推荐

0 条评论