您的位置:首页 > 其它

【HDOJ】2133 What day is it

2014-04-24 22:31 302 查看
需要注意数据有效性。

#include <stdio.h>

#define isLeapYear(y) (y%4==0&&y%100!=0)||(y%400==0)

int nums[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}};
char buf[7][20] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

int main() {
int i, j, year, month, day, total;

while (scanf("%d %d %d", &year, &month, &day) != EOF) {
total = day;
j = isLeapYear(year);
if (month==0 || day==0) {
printf("illegal\n");
continue;
}
for (i=1; i<month; ++i)
total += nums[j][i];
if (month == 2) {
if (!j && day>28) {
printf("illegal\n");
continue;
}
if (j && day>29) {
printf("illegal\n");
continue;
}
}
if ((month==4||month==6||month==9||month==11) && day>30) {
printf("illegal\n");
continue;
}
for (i=1; i<year; ++i) {
if (isLeapYear(i))
total += 366;
else
total += 365;
}
i = total % 7;
printf("%s\n", buf[i]);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: