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[] = { , , , , , , , , , , , , }; char a[], b[];
int ya, yb, ma, mb, da, db;
int i, j, k, acount, bcount;
while (cin >> a >> b)
{
ya = (a[] + ( - '')) * + (a[] + ( - '')) * + (a[] + ( - '')) * + (a[] + ( - ''));
yb = (b[] + ( - '')) * + (b[] + ( - '')) * + (b[] + ( - '')) * + (b[] + ( - ''));
ma = (a[] + ( - '')) * + (a[] + ( - ''));
mb = (b[] + ( - '')) * + (b[] + ( - ''));
da = (a[] + ( - '')) * + (a[] + ( - ''));
db = (b[] + ( - '')) * + (b[] + ( - ''));
//cout << ya << " " << ma << " " << da << endl;
//cout << yb << " " << mb << " " << db << endl; acount = ;
for (i = ; i < ma; i++)
{
acount += m[i];
}
if (ma> && ((ya % == && ya % != ) || ya % == ))
{
acount += ;
}
acount += da; bcount = ;
for (i = ya; i < yb; i++)//not <=
{
if ((i % == && i % != ) || i % == )
{
bcount += ;
}
else
{
bcount += ;
}
}
for (i = ; i < mb; i++)
{
bcount += m[i];
}
if (mb> && ((yb % == && yb % != ) || yb % == ))
{
bcount += ;
}
bcount += db; cout << bcount - acount + << endl;
} return ;
}
/**************************************************************
Problem: 1096
User: mmcNuaa@163.com
Language: C++
Result: Accepted
Time:0 ms
Memory:1520 kb
****************************************************************/
04-21 02:54
查看更多