碰到日期题就怕的我来写一道水题吧
Posted codinRay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了碰到日期题就怕的我来写一道水题吧相关的知识,希望对你有一定的参考价值。
HDOJ-2005,
http://acm.hdu.edu.cn/showproblem.php?pid=2005
20XX系列的水题哈哈,写了二十分钟,就为找到一种比较正常不傻逼的写法。。。
嗯,学习了一下,闰年的判断可以写成一个接受参数的宏。
#define lev(n) (n%4==0&&(n%100!=0||n%400==0))
然后建立一个二维数组来存储闰年和非闰年的每月天数。
int calendar[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 } }
然后 calendar[luv(year)][i] 就是i月的天数啦!
附2005AC代码:
1 #include <stdio.h> 2 #include <math.h> 3 #define lev(n) (n%4==0&&(n%100!=0||n%400==0)) 4 5 int main() { 6 int calendar[2][13] = { 7 {0,31,28,31,30,31,30,31,31,30,31,30,31}, 8 {0,31,29,31,30,31,30,31,31,30,31,30,31 } 9 }; 10 int year, month, day; 11 int i, count; 12 while (~scanf("%d/%d/%d", &year, &month, &day)) { 13 for (i = 1, count = 0; i < month; i++) { 14 count += calendar[lev(year)][i]; 15 } 16 printf("%d\n", count+day); 17 } 18 }
以上是关于碰到日期题就怕的我来写一道水题吧的主要内容,如果未能解决你的问题,请参考以下文章