蒜头君睡了很久,起来的时候蒜头君在想,我到底睡了多久?
他只记得自己是 y1,m1,d1 睡的,现在已经 y2,m2,d2。好麻烦呀,这么麻烦事情还是交给聪明的你吧,谁让你那么聪明呢。
输入格式 输入两行。
第一行输入三个整数,表示 y1,m1,d1 第二行输入三个整数,表示 y2,m2,d2 。
输出格式 输出一个整数,表示蒜头君睡了多久。
数据范围 1≤ 所有数据≤3000,其中所有的日期都是合法的。
我是这样写的,一个点都没过,还段错误,运行时间超长
#include <iostream>
#include <cstdio>
using namespace std;
typedef unsigned long long ll;
ll Days[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}
};
ll isleap (ll y) {
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
return 366;
}
return 365;
}
ll getDate(ll y, ll m,ll d) {
ll res = d;
ll flag = isleap(y);
for (ll i = 1; i < m; i++) {
res += Days[flag][i];
}
return res;
}
int main(){
ll y1,m1,d1,y2,m2,d2,ans=0;
scanf("%lld %lld %lld",&y1,&m1,&d1);
scanf("%lld %lld %lld",&y2,&m2,&d2);
for(ll i = y1; i <= y2-1; i++){
ans+=isleap(i);
}
ans-=getDate(y1,m1,d1);
ans+=getDate(y2,m2,d2);
printf("%lld",ans);
}