⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p2420_日期计算.cpp

📁 高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程
💻 CPP
字号:
#include <stdio.h>

const    int dday [13] = { 31 , 28, 31 , 30 ,31 ,30 ,31 ,31, 30, 31, 30,31 , 1};

int      N;

bool     moreyear ( int );
void     solve ();

main ()
{
     while ( scanf ( "%d" , &N ) , N != -1 )
           solve ();
}

void solve ()
{
     int   year = 2000 , s , month , day;
     for ( s = 0; s <= N; year ++ )
         s += moreyear ( year ) ? 366 : 365;
     
     year --;
     s -= moreyear ( year ) ? 366 : 365;
     
     for ( month = 0; s <= N; month ++ )
         if ( month == 1 && moreyear ( year ) ) s += 29;
         else s += dday [month];
     month --;
     if ( month == 1 && moreyear ( year )) s -= 29;
     else s -= dday [month];
     
     day = N - s;
     printf ( "%d-%02d-%02d " , year , month + 1 , day + 1 );
     switch ( N % 7 ) {
            case 0 : printf ( "Saturday\n" ); break;
            case 1 : printf ( "Sunday\n" ); break;
            case 2 : printf ( "Monday\n" ); break;
            case 3 : printf ( "Tuesday\n" ); break;
            case 4 : printf ( "Wednesday\n" ); break;
            case 5 : printf ( "Thursday\n" ); break;
            case 6 : printf ( "Friday\n" ); break;
     }
}

bool moreyear ( int K )
{
     return K % 100 ? K % 4 == 0 : K % 400 == 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -