http://codeup.hustoj.com/problem.php?cid=100000578&pid=0
问题 A: 日期差值
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出
每组数据输出一行,即日期差值
样例输入 Copy
20130101
20130105
样例输出 Copy
扫描二维码关注公众号,回复:
12431337 查看本文章

5
#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
int isrun(int y){
if(y%400==0||y%4==0&&y%100!=0)
return 1;
return 0;
}
//巧用二维数组保存平润二月
int month[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}};
int main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
int ans=1;
if(a>b){
int temp=a;a=b;b=temp;
}
int y1=a/10000,m1=a/100%100,d1=a%100;
int y2=b/10000,m2=b/100%100,d2=b%100;
//printf("%d %d %d\n%d %d %d\n",y1,m1,d1,y2,m2,d2);
while(y1!=y2||m1!=m2||d1!=d2){//利用进位算天数
d1++;
if(d1==month[m1][isrun(y1)]+1){
d1=1;
m1++;
}
if(m1==13){
y1++;
m1=1;
}
ans++;
}
printf("%d\n",ans);
}
return 0;
}