九度1096:日期差值

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

很经典的计算任意两个日期之间的差值。

方法:利用预处理,以空间换时间的方法,计算任意日期与初始日期0年1月1日之间的差值。再讲两差值求差+1即可。本题关键在预处理部分

#include<stdio.h>

#define
ISYEAR(x) x%100!=0&&x%4==0||x%400==0?1:0

int

dayOfMonth[13][2]={

    0,0,

    31,31,

    28,29,

    31,31,

    30,30,

    31,31,

    30,30,

    31,31,

    31,31,

    30,30,

    31,31,

    30,30,

    31,31

};

struct

Date{

    int

Day;

    int

Month;

    int

Year;

    void

nextDay(){ 
//计算下一天日期

        Day++;

        if(Day>dayOfMonth[Month][ISYEAR(Year)]){//如果日期超过了当月的最大日期

            Day=1;

            Month++;//进入下一月

            if(Month>12){//月份超过12

                Month=1;

                Year++;//进入下一年

            }

        }

    }

};

int

buf[5001][13][32];
//保持预处理的天数

int

Abs(
int

x){

    return

x<0?-x:x;

}

int

main()

{

    Date
tmp;

    int

cnt=0;
//天数计数

    tmp.Day=1;

    tmp.Month=1;

    tmp.Year=0;//初始化日期类对象为0年1月1日

    while(tmp.Year!=5001){//日期不超过5000年

        buf[tmp.Year][tmp.Month][tmp.Day]=cnt;//将该日与0年1月1日的天数差保持起来

        tmp.nextDay();//计算下一天日期

        cnt++;

    }

    int

d1,m1,y1;

    int

d2,m2,y2;

    while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF){

        scanf("%4d%2d%2d",&y2,&m2,&d2);

        printf("%d\n",Abs(buf[y2][m2][d2]-buf[y1][m1][d1])+1);

    }

}

时间: 2024-10-24 08:42:52

九度1096:日期差值的相关文章

九度OJ 1096 日期差值

题目1096:日期差值 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5143 解决:1789 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #include<string.h> #include<s

1096.日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0?1:0 int dayofmonth[13][2]= { 0,0, 3

九度oj 题目1096:日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <string> 5 #include

九度题目1096:日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #include<algorithm> #include<iostream> #include<stack> #include<vector&

题目1096:日期差值 Java/C++

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 Java AC 代码: import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[]

题目1096:日期差值 (2009年上海交通大学计算机研究生机试真题)

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 代码如下: #include "stdio.h" int dayOfMonth[13][2]={ 0,0, 31,31, 28,29, 31,31, 30,30, 31,31, 30,30, 31,31, 31,

日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 来源: 2009年上海交通大学计算机研究生机试真题 #include <iostream> using namespace std; #define ISYEAR(x) x%100 != 0 && x%4

Hibernate中HQL的日期差值计算,可计算相差多少秒

最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了. 网上找了一下总共的日期函数有一下几个: CURRENT_DATE() 返回数据库当前日期 时间函数 JPAQL HQL CURRENT_DATE() 返回数据库当前日期 CURRENT_TIME() 时间 时间函数 JPAQL HQL CURRENT_TIME() 返回数据库当前时间 SECOND(d) 从日期中提取具体秒 时间函数 HQL SECOND(时间字段) 空的时候返回null MI

MVC 下 ajax调用 日期差值计算

背景: 服务项目已有服务期起止时间From-To 现在要根据用户输入的新的起始时间, 和该服务期的原有区间值, 计算出新的服务期截止时间 即 NewServiceToDateTime = NewServiceFromDateTime + ( OldServiceToDateTime - OldServiceFromDateTime) 本示例的效果: 1.日期转换 及 差值计算 2.mvc 下 ajax 调用及赋值 相关代码如下: 后台Controller下Action处理 public Date