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
- 6-题目1096:日期差值
- 题目1096:日期差值
- 题目1096:日期差值
- 题目1096:日期差值
- 题目1096:日期差值
- 题目1096:日期差值
- 题目1096:日期差值
- 题目6:日期差值
- 题目1096:日期差值 机试指南6
- 九度题目1096:日期差值
- [九度]题目1096:日期差值
- 九度题目1096:日期差值
- 九度OJ 题目1096:日期差值
- 题目1096:日期差值 Java/C++
- 九度-题目1096:日期差值
- 【九度】题目1096:日期差值
- 【九度】题目1096:日期差值
- 九度 oj 题目1096:日期差值
- Android_ListView_有Header或Footer时onItemClick里的position的问题
- Linux下搭建maven 私服
- 计算机专业英语 学习笔记 1
- EditText
- 遇到IOError: CRC check failed这样的问题的可能解决方法
- 6-题目1096:日期差值
- 点击水波纹效果
- Activity和Fragment的数据传递
- Fedora 23 KDE定制版安装后需要做的几件事情
- ZOJ1025
- android 学习网站
- 《重构 改善既有代码的设计》学习笔记 2 -- Extract Method(提炼函数)
- Android各种权限
- HDU 3585 maximum shortest distance 二分+最大团