#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream cin("1.txt");
int t;
int year;
int month;
int day;
cin>>t;
for(int i=0; i<t; i++)
{
cin>>year>>month>>day;
if(month == 9 && day == 30)
{
cout<<"YES"<<endl;
continue;
}
if(month == 11 && day == 30)
{
cout<<"YES"<<endl;
continue;
}
if((month + day)%2 == 0)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 1;
}
我的错误答案,题目理解错误
#include <vector>
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;
class calendar
{
public:
int year;
int month;
int day;
calendar() {}
calendar(const calendar & c):year(c.year),month(c.month),day(c.day) {}
calendar(int year,int month,int day):year(year),month(month),day(day) {}
void setzero(int year,int month,int day){this->year=year;this->month=month;this->day=day;}
bool iszero() {return (!year&&!month&&!day);}
bool operator==(const calendar& c)
{
if(year==c.year && month==c.month && day==c.day)
return true;
return false;
}
bool operator<=(const calendar& c)
{
if(year>c.year)
return false;
else if(year<c.year)
return true;
else
{
if(month>c.month)
return false;
else if(month<c.month)
return true;
else
{
return day<=c.day;
}
}
}
};
bool leap(int year)
{
if(year%100==0)//
{
if(year%400==0)
return true;
else
return false;
}
else//不能%100为0
{
if(year%4==0)
return true;
else
return false;
}
}
calendar get_next_day(calendar c)
{
calendar next_day(c);
switch (next_day.month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
if(next_day.day==31)
{
next_day.month++;
next_day.day=1;
}
else
{
next_day.day++;
}
break;
case 4:
case 6:
case 9:
case 11:
if(next_day.day==30)
{
next_day.month++;
next_day.day=1;
}
else
{
next_day.day++;
}
break;
case 2:
if(next_day.day==29)
{
next_day.month++;
next_day.day=1;
}
else if(next_day.day==28)
{
if(leap(next_day.year))//leap year
{
next_day.day++;
}
else
{
next_day.month++;
next_day.day=1;
}
}
else
{
next_day.day++;
}
break;
case 12:
{
if(31==next_day.day)
{
next_day.year++;
next_day.month=1;
next_day.day=1;
}
else
next_day.day++;
}
break;
}
return next_day;
}
calendar get_next_month(calendar c)
{
calendar next_month(c);
switch (next_month.month)
{
case 1:
if(30==next_month.day || 31==next_month.day)
{
next_month.setzero(0,0,0);
}
else if(29==next_month.day)
{
if (leap(next_month.year))// leap year
{
next_month.month++;
}
else// not leap year
{
next_month.setzero(0,0,0);
}
}
else
{
next_month.month++;
}
break;
case 3:
case 5:
case 7:
case 8:
case 10:
if(next_month.day==31)
{
next_month.setzero(0,0,0);
}
else
{
next_month.month++;
}
break;
case 2:
case 4:
case 6:
case 9:
case 11:
next_month.month++;
break;
case 12:
{
next_month.year++;
next_month.month=1;
}
break;
}
return next_month;
}
calendar c_begin(1900,1,1);
calendar c_end(2001,11,4);
bool win;
bool flag;
void dfs(calendar c, bool win)
{
if(flag==true)
return;
if(c==c_end && win)
flag=true;
calendar next_month=get_next_month(c);
if(!(next_month.iszero()) && next_month<=c_end)
dfs(next_month, !win);
calendar next_day=get_next_day(c);
if(next_day<=c_end)
dfs(next_day, !win);
}
int main()
{
#ifdef ONLINE_JUDGE
#else
ifstream cin("1.txt");
#endif
int T;
cin>>T;
calendar c;
while(T--)
{
cin>>c.year>>c.month>>c.day;
win=false;
flag=false;
dfs(c,win);
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}