题目链接:http://poj.org/problem?id=2080
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1420
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std;
char week[7][10]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
int month[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 year[2]={365,366};
int judge(int year)
{
if((year%4==0&&year%100!=0)||year%400==0) return 1;
return 0;
}
int main()
{
int day,weekday;
while(scanf("%d",&day)&&day!=-1)
{
weekday=day%7;
int i;
for(i=2000;i<=9999;i++)
if(day>=year[judge(i)]) day-=year[judge(i)];
else break;
int j;
for(j=0;j<=11;j++)
{
int t=judge(i);
if(day>=month[t][j]) day-=month[t][j];
else break;
}
printf("%d-%02d-%02d %s\n",i,j+1,day+1,week[weekday]);
}
return 0;
}