Apache还想再活五百年
Description
Apache总是觉得人生短暂,不能够尽欢。所以他还想再活五百年,于是Apache变跋山涉水来到传说中的蓬莱仙岛向各位长者询问长生的秘诀。长者毕竟是长者,怎么可能让一个年轻人如此容易的得到如此秘诀呢。长者给Apache设置了九九八十一道题目,通关后便可取得秘诀,再活五百年。长者给出的第一道题目如下: 蓬莱仙岛上曾经住着很多长者,我现在给出若干个长者的出生日期以及得道升天的日期,那么请你给出长者在蓬莱仙岛上呆了多少天?
Input
若干组出生日期,以及得道升天日期(顺序可能相反)。各占一行。年份不超过2017。
Output
一行输出一位长者所呆的天数。
Sample Input
1995:03:09
1991:11:12
Sample Output
1213
Hint
Source
2017年6月月赛-暨中南大学暑期集训选拔赛第二场
Author
廖璇璇
题目大意:中文题
解题思路:将年月日转化成对0年0月0日的天数,两个日期相减即可。
#include<iostream>
#include<string>
#include<map>
#include<set>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<vector>
#include<cstring>
#include<iomanip>
#include<sstream>
using namespace std;
const int INF=0x3f3f3f3f;
const int MAXN=1e5;
int y,y2,m,m2,d,d2;
int month[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int op(int y)
{
return (y%100!=0&&y%4==0)||(y%400==0);
}
int cal(int y,int m,int d)
{
int sum=0;
sum+=y*365;
for(int i=0;i<y;i++)
{
if(op(i)) sum+=1;
}
if(op(y))
{
for(int i=1;i<m;i++) sum+=month[1][i];
}else
{
for(int i=1;i<m;i++) sum+=month[0][i];
}
sum+=d;
return sum;
}
int main()
{
string s;
int t;
char ch;
while(cin>>y)
{
cin>>ch;cin>>m;cin>>ch;cin>>d;
cin>>y2;cin>>ch;cin>>m2;cin>>ch;cin>>d2;
//cout<<y<<m<<d<<endl;
//cout<<y2<<m2<<d2<<endl;
cout<<abs(cal(y,m,d)-cal(y2,m2,d2))<<endl;
}
return 0;
}