zoukankan      html  css  js  c++  java
  • 题目1096:日期差值(a-b=(a-c)-(b-c))

    http://ac.jobdu.com/problem.php?pid=1096

    题目描述:

    有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天

    输入:

    有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

    输出:

    每组数据输出一行,即日期差值

    样例输入:

    20110412

    20110422

    样例输出:

    11

     

    思路:

    计算2011 00 00到2011 04 12的天数为acount;计算2011 00 00到2011 04 22的天数为bcount;最终结果应该是acount-bcount+1。

    代码:

    # include<iostream>
    using namespace std;
     
    int main()
    {
        int m[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
     
        char a[8], b[8];
        int ya, yb, ma, mb, da, db;
        int i, j, k, acount, bcount;
        while (cin >> a >> b)
        {
            ya = (a[0] + (0 - '0')) * 1000 + (a[1] + (0 - '0')) * 100 + (a[2] + (0 - '0')) * 10 + (a[3] + (0 - '0'));
            yb = (b[0] + (0 - '0')) * 1000 + (b[1] + (0 - '0')) * 100 + (b[2] + (0 - '0')) * 10 + (b[3] + (0 - '0'));
            ma = (a[4] + (0 - '0')) * 10 + (a[5] + (0 - '0'));
            mb = (b[4] + (0 - '0')) * 10 + (b[5] + (0 - '0'));
            da = (a[6] + (0 - '0')) * 10 + (a[7] + (0 - '0'));
            db = (b[6] + (0 - '0')) * 10 + (b[7] + (0 - '0'));
            //cout << ya << " " << ma << " " << da << endl;
            //cout << yb << " " << mb << " " << db << endl;
     
            acount = 0;     
            for (i = 1; i < ma; i++)
            {
                acount += m[i];
            }
            if (ma>2 && ((ya % 4 == 0 && ya % 100 != 0) || ya % 400 == 0))
            {
                acount += 1;
            }
            acount += da;
     
     
            bcount = 0;
            for (i = ya; i < yb; i++)//not <=
            {
                if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
                {
                    bcount += 366;
                }
                else
                {
                    bcount += 365;
                }
            }
            for (i = 1; i < mb; i++)
            {
                bcount += m[i];
            }
            if (mb>2 && ((yb % 4 == 0 && yb % 100 != 0) || yb % 400 == 0))
            {
                bcount += 1;
            }
            bcount += db;
     
            cout << bcount - acount + 1 << endl;
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1096
        User: mmcNuaa@163.com
        Language: C++
        Result: Accepted
        Time:0 ms
        Memory:1520 kb
    ****************************************************************/
    View Code
  • 相关阅读:
    转:因果图法
    转:测试用例设计方法--正交试验法详解
    转:Navicat Premium15破解教程
    转:Excel2016怎么样快速比较两列数据是否相同
    zabbix使用问题
    zabbix系列之七——安装后配置二Userparameters
    zabbix系列之八——安装后配置三Triggers
    zabbix系列之六——安装后配置二Items
    zabbix系列之五——安装后配置一
    zabbix系列之四——快速使用
  • 原文地址:https://www.cnblogs.com/mmcmmc/p/3869126.html
Copyright © 2011-2022 走看看