6-题目1096:日期差值

来源:互联网 发布:mac壁纸存放路径 编辑:程序博客网 时间:2024/05/21 21:48

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

题目描述:

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

我第一反应是有没有专门的函数可以计算,后来还是自己写了判断的函数。一次成功!
算法是计算输入年份与1400年01月01日的相差天数,然后大-小+1~(公历纪年从1400开始~)

#include<stdio.h>  #include<stdlib.h>#include<iostream>  #include<algorithm>#include<string.h>  using namespace std; void divide_day(int n, int &year, int &month, int &day){    year = n / 10000;    month = (n % 10000) / 100;    day = n % 100;} int judge_366(int year)     //默认公元纪年从1400开始,即输入年份要大于1400年{    if ((year % 4 == 0  && year % 100 != 0 )|| year % 400 == 0)        return 366;    else        return 365;}int judge_31(int month, int year){    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 9 || month == 10 || month == 12 ) return 31;    else if (month == 4 || month == 6 || month == 8 || month == 11) return 30;    else    {        if (judge_366(year) == 366) return 29;        else return 28;    }}  int main(){    char day1[9], day2[9];    int  day1_int, day2_int;    int y1, y2, m1, m2, d1, d2,sum1,sum2,i;    while (cin >> day1 >> day2)    {        day1_int = atoi(day1);  //将char型日期转化成int型        day2_int = atoi(day2);        divide_day(day1_int, y1, m1, d1);  //将int型日期分解成各int型年月日,y,m,d        divide_day(day2_int, y2, m2, d2);        //cout << day1_int << "  " << y1 << " " << m1 << " " << d1 << endl;        //cout << day2_int << "  " << y2 << " " << m2 << " " << d2 << endl;         sum1 = 0, sum2 = 0;        for ( i = 1400; i < y1; i++)   //把从1400年起的日子加起来,今年的日子单独算            sum1 += judge_366(i);        for (i = 1; i < m1; i++)            sum1 += judge_31(i, y1);        sum1 += d1;         for (i = 1400; i < y2; i++)               sum2 += judge_366(i);        for (i = 1; i < m2; i++)            sum2 += judge_31(i, y2);        sum2 += d2;         cout << sum2 - sum1 + 1 << endl;    }    //system("pause");    return 0; }/**************************************************************    Problem: 1096    User: yy4869    Language: C++    Result: Accepted    Time:0 ms    Memory:1520 kb****************************************************************/

测试用例:

输入:20120307  20130101  输出:301


0 0
原创粉丝点击