首页 > 代码库 > HDU 1076 An Easy Task
HDU 1076 An Easy Task
对于闰年判断的题已经做过很多,但是这个题令我印象深刻。
刚开始,我的代码是
1 #include<stdio.h> 2 int is_leap(int n) 3 { 4 if((n%4==0&&n%100!=0)||n%400==0) 5 return 1; 6 else 7 return 0; 8 } 9 int main() 10 { 11 int m; 12 scanf("%d",&m); 13 int i; 14 int a,b; 15 for(i=1;i<=m;i++) 16 { 17 scanf("%d%d",&a,&b); 18 if(is_leap(a)==1) 19 a+=4*(b-1); 20 else 21 { 22 int j; 23 for(;;a++) 24 { 25 if(is_leap(a)==1) 26 break; 27 } 28 a+=4*b; 29 } 30 printf("%d\n",a); 31 32 } 33 return 0; 34 }
样例输入是
3
2005 25
1855 12
2004 10000
样例输出最后一组数据出错,说明这题的逻辑有错误。
正确的代码:
#include<stdio.h> int main() { int m; scanf("%d",&m); int i; int a,b; for(i=1;i<=m;i++) { int count = 0; scanf("%d%d",&a,&b); while(count<b) { if((a%4==0&&a%100!=0)||a%400==0) { count++; a++; } else a++; } printf("%d\n",a-1); } }
这样即使在循环中遇到闰年,也不会出错了。
HDU 1076 An Easy Task
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。