| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
容易理解的思路按天计算超时,索性就先按年计算,然后剩下的按天计算
char week[7][10] = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"};
int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool is_leap_year(int y)
{
return (y%400==0 || (y%100!=0 && y%4==0));
}
int main()
{
int n, y, m, d, w;
while(scanf("%d", &n)!=EOF && n!=-1)
{
w = (6+n) % 7;//计算星期
for(y = 2000, m = 1, d = 1; n>365; n-=365,++y)
//按年计算,每次减365,如果是闰年,再减1
if(is_leap_year(y))
--n;
while(n--)//按天计算
{
if(is_leap_year(y))
month[2] = 29;
else
month[2] = 28;
++d;
if(d > month[m])
{
d = 1;
++m;
if(m > 12)
{
m = 1;
++y;
}
}
}
printf("%04d-%02d-%02d %s\n", y, m, d, week[w]);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator