• [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;
    }
    


  • 相关阅读:
    python 正则表达式
    python 递归查找
    MYSQL 索引优化,避免回表
    MYSQL ibtmp文件暴增
    mysql 主从复制刷新参数
    MYSQL 复制数据过滤
    快速入门Kubernetes
    ansible之playbook的编写
    ansible的安装及常用模块详解
    ERROR Failed to discover available identity versions when contacting http://ct:5000/v3.
  • 原文地址:https://www.cnblogs.com/sr1993/p/3697972.html
Copyright © 2020-2023  润新知