日历是一种测量时间的系统,从几小时到几分钟到几个月和几天,最后到几年和几个世纪。小时,日,月,年和世纪的条款都是压光机系统的时间单位。根据公历,即今日使用的公历,可以被4整除的年份是闰年,但百年不能被400整除。因此,1700年,1800年,1900年和2100年是不是闰年,但1600,2000和2400是闰年。考虑到自2000年1月1日以来已经过去的天数,您的任务是查找星期几和星期几。
输入由每行包含一个正整数的行组成,这是自2000年1月1日以来经过的天数AD最后一行包含一个不应被处理的整数-1。你可以假定结果日期不会在9999年之后。
对于每个测试用例,以“YYYY-MM-DD DayOfWeek”格式输出包含日期和星期几的行,其中“DayOfWeek”必须是“星期日”,“星期一”,“星期二”, “星期三”,“星期四”,“星期五”和“星期六”。
1730 1740 1750 1751 -1
2004-09-26星期天 2004-10-06星期三 2004-10-16星期六 2004-10-17星期天
/*#include
int judge(int year)
{
if((year%4==0&&year%100!=0)||year%400==0) return 1;
return 0;
}
int main()
{
char week[7][10]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
int year[2]={365,366},day,weekday,i,j,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};
for(;;)
{ scanf("%d",&day);
if(day==-1)
break;
weekday=day%7;
for(i=2000;i<=9999;i++)
if(day>=year[judge(i)])
day-=year[judge(i)];
else
break;
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;
}*/
#include
int main()
{
int a,e,t,z,b,i,j,ge=0,d[12]= {31,29,31,30,31,30,31,31,30,31,30,31},g[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
char f[7][10]= {"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
for(;;)
{
e=0;
scanf("%d",&a);
t=a;
if(a==-1)
break;
if(a<=365)
{
for(i=0; i<=11; i++)
{
a-=d[i];
if(a<=0)
break;
}
a+=d[i];
e=t%7;
printf("%d-%02d-%02d ",2000,i+1,a+1);
printf("%s\n",f[e]);
}
else
{
for(i=0;; i++)
{
if(a>=0)
{
if(((2000+i)%100!=0&&(2000+i)%4==0)||(2000+i)%400==0)
{
a-=366;
z=1;
}
else
{
a-=365;
z=2;
}
}
else
{
if(z==1)
a+=366;
if(z==2)
a+=365;
break;
}
}
if(((2000+i-1)%100!=0&&(2000+i-1)%4==0)||(2000+i-1)%400==0)
{
for(j=0; j<=11; j++)
{
a-=d[j];
if(a<=0)
break;
}
}
else
for(j=0; j<=11; j++)
{
a-=g[j];
if(a<=0)
break;
}
a+=d[j];
e=t%7;
printf("%d-%02d-%02d ",2000+i-1,j+1,a+1);
printf("%s\n",f[e]);
}
}
}