#include <iostream> #include <vector> using namespace std; vector<int> day={31,28,31,30,31,30,31,31,30,31,30,31}; bool isValidDate(int y,int m,int d){ if(m>=1 && m<=12){} else return false; if((y%4==0 && y%100 !=0) || y%400==0){ if(m==2){ if(d>=1&&d<=day[m-1]+1){} else return false; }else{ if(d>=1&& d<=day[m-1]){} else return false; } }else{ if(d>=1&& d<=day[m-1]){} else return false; } return true; } bool isValidRange(int y,int m,int d,int y_start,int m_start,int d_start,int y_end,int m_end,int d_end){ //月判断 if(y==y_start){ if(m<m_start) return false; //日判断 if(m==m_start){ if(d<d_start) return false; } } else if(y==y_end){ if(m>m_end) return false; //日判断 if(m==m_end){ if(d>d_end) return false; } } return true; } int main() { string s1,s2;//分别定义开始日期和结束日期 cin>>s1>>s2; //年起始和年终止 //s1表示输入的起始日期,s2表示输入的结束日期 int y_start=(s1[0]-'0')*10*10*10+(s1[1]-'0')*10*10+(s1[2]-'0')*10+(s1[3]-'0'); int m_start=(s1[4]-'0')*10+(s1[5]-'0'); int d_start=(s1[6]-'0')*10+(s1[7]-'0'); int y_end=(s2[0]-'0')*10*10*10+(s2[1]-'0')*10*10+(s2[2]-'0')*10+(s2[3]-'0'); int m_end=(s2[4]-'0')*10+(s2[5]-'0'); int d_end=(s2[6]-'0')*10+(s2[7]-'0'); int cnt=0; for(int i=y_start;i<=y_end;i++){ int a=i/1000; int b=(i-a*1000)/100; int c=(i-a*1000-b*100)/10; int d=i-a*1000-b*100-c*10; int m=d*10+c; int day=b*10+a; if(isValidDate(i, m, day)&&isValidRange(i, m, day, y_start, m_start, d_start, y_end, m_end, d_end)){ cnt++; } } //20011002 //20100102 cout<<cnt<<endl; return 0; } // 64 位输出请用 printf("%lld")