• HDU1201 18岁生日【日期计算】


    18岁生日

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

    Total Submission(s): 32851    Accepted Submission(s): 10649
    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


    问题链接:HDU1201 18岁生日

    问题描述参见上文。

    问题分析:单纯的一个有关闰年及日期天数计算问题。

    程序说明:C语言库函数scanf()对于格式化输入有天然优势。


    AC的C++语言程序如下:

    /* HDU1201 18岁生日 */
    
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    const int N = 18;
    const int YEARDAYS = 365;
    
    // 闰年计算函数
    int leapyear(int year) {
        if((year%4 == 0 && year%100 != 0) || year%400 == 0)
            return 1;
        return 0;
    }
    
    int main()
    {
        int t, byear, bmonth, bday, sum;
    
        scanf("%d", &t);
        while(t--) {
            scanf("%d-%d-%d", &byear, &bmonth, &bday);
    
            if(bmonth == 2 && bday == 29 && leapyear(byear + N) != 1)
                printf("-1
    ");
            else {
                // 计算天数
                sum = 0;
                sum = YEARDAYS * N;             // 每年365天,18年总天数
                for(int i=1; i<N; i++)              // 出生年和18岁那年以外的闰年天数
                    sum +=  leapyear(byear + i);
                if(bmonth > 2)
                    sum += leapyear(byear + N); // 18岁那年的闰年天数
                else if(bmonth < 2 || bday != 29)
                    sum += leapyear(byear);     // 出生年的闰年天数
    
                printf("%d
    ", sum);
            }
        }
    
        return 0;
    }


  • 相关阅读:
    ACM的算法分类 2015-04-16 14:25 22人阅读 评论(0) 收藏
    初学Larevel 2014-08-21 11:24 90人阅读 评论(0) 收藏
    初学PHP&MySQL 2014-05-31 12:40 92人阅读 评论(0) 收藏
    codeforces 570 E. Pig and Palindromes (dp)
    codeforces 570 D. Tree Requests (dfs序)
    poj 2157 Maze (bfs)
    cf 570 C. Replacement (暴力)
    cf 570B B. Simple Game(构造)
    cf 570 A. Elections
    hdu 1429胜利大逃亡(续) (bfs+状态压缩)
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564060.html
Copyright © 2020-2023  润新知