这题不难,多注意细节
这是某好心人给的测试数据:
13 2004-1-22 2004-2-28 2004-2-29 2004-4-20 2003-2-20 2003-2-28 2003-3-20 2002-2-20 2002-2-28 2002-3-20 2001-2-20 2001-2-28 2001-3-20 结果: 6575 6575 -1 6574 6575 6575 6575 6574 6574 6575 6574 6574 6574
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<cmath> #include<string> #include<iomanip> using namespace std; const int MAX = 10010; bool isLY(int y) { if(y%4==0 && y%100!=0 || y%400==0) return true; return false; } int main() { char ch1,ch2; int T,y,m,d,i,day; cin>>T; while(T--) { day = 18*365; cin>>y>>ch1>>m>>ch2>>d; if(m==2 && d==29 && !isLY(y+18)) {cout<<"-1"<<endl; continue;} for(i=y+1;i<y+18;i++) if(isLY(i)) day++; if(m>2) {if(isLY(y+18)) day++;} else {if(isLY(y)) day++;} cout<<day<<endl; } return 0; }