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下水题測试.....)

HDU An Easy Task

杭电OJ(HDU)-ACMSteps-Chapter Two-《An Easy Task》《Buildings》《decimal system》《Vowel Counting》

An Easy Task

An Easy Task(简箪题)

HDU 2132 An easy problem