直接模拟每一天,结果单步调不出来。。。 求助
//USACO1.1.2
#include<bits/stdc++.h>
using namespace std;
inline bool checkend(int var1, int var2, int var3, int n) {
if(var1 == 1990 + n - 1)
if(var2 == 12)
if(var3 == 31)
return true;
return false;
}
struct date {
int year;
int month;
int date;
int day;
}date;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int n;
cin >> n;
date.year = 1990;
date.month = 1;
date.date = 1;
date.day = 1;
int daycnt[7] = {0, 0, 0, 0, 0, 0, 0};
while(1) {
if(checkend(date.year, date.month, date.date, n))
break;
if(date.date == 13)
daycnt[date.day - 1]++;
date.day++;
if(date.day > 7)
date.day -= 7;
date.date++;
bool tagmonth = false;
if(date.month == 2) {
if(((date.year % 4 == 0) and (date.year % 100 != 0)) or (date.year % 400 == 0)) {
if(date.date > 29) {
date.date -= 28;
tagmonth = true;
}
}
else if(date.date > 28) {
date.date -= 28;
tagmonth = true;
}
}
if(date.month == 4 or date.month == 6 or date.month == 9 or date.month == 11) {
if(date.date > 30) {
date.date -= 30;
tagmonth = true;
}
}
else if(date.date > 31) {
date.date -= 31;
tagmonth = true;
}
bool tagyear = false;
if(tagmonth == true)
date.month++;
if(date.month > 12) {
date.month -= 12;
tagyear = true;
}
if(tagyear == true)
date.year++;
}
cout << daycnt[6] << " ";
cout << daycnt[7] << " ";
cout << daycnt[1] << " ";
cout << daycnt[2] << " ";
cout << daycnt[3] << " ";
cout << daycnt[4] << " ";
cout << daycnt[5] << " ";
return 0;
}