zoukankan      html  css  js  c++  java
  • [ACM] hdu 1201 18岁生日

    18岁生日

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
    Total Submission(s) : 14   Accepted Submission(s) : 6

    Font: Times New Roman | Verdana | Georgia

    Font Size: ← →

    Problem Description

    Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。

    Input

    一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。

    Output

    T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。

    Sample Input

    1
    1988-03-07
    

    Sample Output

    6574
    

    Author

    Gardon

    Source

    Gardon-DYGG Contest 2 


    解题思路:

    判段有没有18岁生日好判断,只要是出生在2月29日,而十八年后是平年,没有2月29就没有18岁生日。计算18年经过的天数,整体思路为先不考虑瑞年的情况,最少为18*365天,然后再加上经过2月29日(瑞年专属)的天数就可以了。

    代码:

    #include <iostream>
    using namespace std;
    int year,month,day;
    char a,b;
    bool leap(int year)
    {
        if((year%4==0&&year%100!=0)||year%400==0)
            return 1;
        return 0;
    }
    int main()
    {
        int t;cin>>t;
        while(t--)
        {
            int sum=0;
            cin>>year>>a>>month>>b>>day;
            if(month==2&&day==29&&!leap(year+18))//没有18岁生日的情况
                cout<<-1<<endl;
            else
            {
                sum=18*365;
                if(month==1||(month==2&&day<=28))//当出生日期小于等于2月28日时,年份是不是瑞年从本年开始看,因为要过本年的2月29,如果本年是瑞年的话
                {
                    for(int i=0;i<=17;i++)
                        if(leap(year+i))
                    sum++;
                }
                else if(month>=3)//当出生日期大于2月时,年份是不是瑞年从下一年开始看,不用过本年的2月29,看下一年
                {
                    for(int i=1;i<=18;i++)
                    if(leap(year+i))
                    sum++;
                }
                cout<<sum<<endl;
            }
        }
        return 0;
    }
    


  • 相关阅读:
    HDU 1800 Flying to the Mars 字典树,STL中的map ,哈希树
    字典树 HDU 1075 What Are You Talking About
    字典树 HDU 1251 统计难题
    最小生成树prim算法 POJ2031
    POJ 1287 Networking 最小生成树
    次小生成树 POJ 2728
    最短路N题Tram SPFA
    poj2236 并查集
    POJ 1611并查集
    Number Sequence
  • 原文地址:https://www.cnblogs.com/sr1993/p/3697972.html
Copyright © 2011-2022 走看看