- 定位:2018第九届蓝桥杯省赛C/C++B组第一题
- 属性:日期问题
- 难度:入门
- 代码:
#include<iostream>
using namespace std;
int y1,y2,m1,m2,d1,d2,ans;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void isru(int y){
if(y%400==0||(y%4==0&&y%100!=0)){
day[2]=29;
}else{
day[2]=28;
}
}
int main(){
cin>>y1>>m1>>d1;
cin>>y2>>m2>>d2;
while(y1<=y2){
if(y2==y1){
isru(y1);
ans+=(day[m1]-d1)+1;
for(int i=m1+1;i<=m2-1;i++){
ans+=day[i];
}
ans+=d2;
break;
}else if(y2-y1==1){
if(m1<2){
isru(y1);
}
ans+=(day[m1]-d1)+1;
for(int i=m1+1;i<=12;i++){
ans+=day[i];
}
if(m2>2){
isru(y2);
}
for(int i=1;i<=m2-1;i++){
ans+=day[i];
}
ans+=d2;
break;
}else{
isru(y1);
if(day[2]==28){
ans+=365;
}else{
ans+=366;
}
y1++;
}
}
cout<<ans;
return 0;
}
- 感悟:日期的模拟,关键是相差一年时前一年是否已过二月,截止年是否超过二月,在情况范围内便考虑闰年判断。
- 归档:已归档
- 元魂:骷髅猛犸兽X