现在的位置: 首页 > 综合 > 正文

hdu2133 What day is it

2013年01月10日 ⁄ 综合 ⁄ 共 902字 ⁄ 字号 评论关闭

 

 

#include <stdio.h>

int isleap( int y ) 
{
    if ( y % 4 == 0 && y % 100 != 0 || y % 400 == 0 )
        return 1;
    else return 0;
}

int legal( int y, int m, int d ) 
{
    if ( y <= 0 || y >= 10000 || m <= 0 || m >= 13 || d <= 0 || d >= 32 )
        return 0;
    if ( ( m == 2 && ( isleap(y) == 0 ) && d >= 29 ) ||
         ( m == 2 && ( isleap(y) == 1 ) && d >= 30 ) )
        return 0;
    if ( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 )
        return 0;
    return 1;
}

int leap( int y ) 
{
    int res = 0;
    int i;

    for ( i = 4; i < y; i += 4 ) {
        if ( isleap(i) == 1 ) {
            res++;
        }
    }
    return res;
}


int work( int y, int m, int d ) 
{
    int res = d;
    int i;
    int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};


    for ( i = 1; i < m; ++i ) {
        res += month[i];
    }

    res += 365 * (y-1);
    res += leap(y);
    if ( isleap(y) != 0 && m > 2 ) res++;

    return res % 7;
}


int main()
{
    int y, m, d;
    int res;

    while ( ~scanf( "%d %d %d", &y, &m, &d ) ) {
        if ( legal(y, m, d) == 0 ) {
            puts( "illegal" );
            continue;
        }

        res = work(y, m, d);
        switch(res) {
        case 0: puts( "Sunday" ); break;
        case 1: puts( "Monday" ); break;
        case 2: puts( "Tuesday" ); break;
        case 3: puts( "Wednesday" ); break;
        case 4: puts( "Thursday" ); break;
        case 5: puts( "Friday" ); break;
        case 6: puts( "Saturday" ); break;
        }
    }
    return 0;
}

抱歉!评论已关闭.