hdu 2133 What day is it

来源:互联网 发布:tensorflow显卡要求 编辑:程序博客网 时间:2024/05/16 04:38

What day is it

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


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
 
直接计算该日期和0年1月1日(周六)天数差,然后模7就好,注意闰年还有合法性判断要包括0月和0日的情况。

#include<stdio.h>#include <string>#include <iostream>using namespace std;int mon[2][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}} ;int isleapyear(int year){    if((year%4==0 &&year%100!=0)||(year%400==0))    {        return 1;    }    return 0;}int main( ){    int y,m,d;    long long sum;    while (cin>>y>>m>>d)    {        sum=0;        if(m==0 || d==0 ||((!isleapyear(y)) && d>mon[0][m-1]) ||(isleapyear(y) && d>mon[1][m-1]))        {            cout<<"illegal"<<endl;            continue;        }        for (int i=0; i<y; i++)        {            if(isleapyear(i))            {                sum+=366;            }            else            {                sum+=365;            }        }        for (int i=1; i<m; i++)        {            if(isleapyear(y))            {                sum+=mon[1][i-1];            }            else            {                sum+=mon[0][i-1];            }        }        sum+=d;        switch (sum%7)        {            case 1:                cout<<"Saturday"<<endl;                break;            case 2:                cout<<"Sunday"<<endl;                break;            case 3:                cout<<"Monday"<<endl;                break;            case 4:                cout<<"Tuesday"<<endl;                break;            case 5:                cout<<"Wednesday"<<endl;                break;            case 6:                cout<<"Thursday"<<endl;                break;            case 0:                cout<<"Friday"<<endl;                break;        }    }    return 0;}


0 0
原创粉丝点击