COJ1957-Apache还想再活五百年

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值