首页 > 代码库 > 碰到日期题就怕的我来写一道水题吧
碰到日期题就怕的我来写一道水题吧
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 }
碰到日期题就怕的我来写一道水题吧
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。