HDU 1076 An Easy Task
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章
HDU-1076-An Easy Task(Debian下水题測试.....)
杭电OJ(HDU)-ACMSteps-Chapter Two-《An Easy Task》《Buildings》《decimal system》《Vowel Counting》