P1202
  • 板块学术版
  • 楼主uFTvL9
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/12/11 11:23
  • 上次更新2023/11/3 22:31:12
查看原帖
P1202
411963
uFTvL9楼主2021/12/11 11:23

直接模拟每一天,结果单步调不出来。。。 求助

//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;
}
2021/12/11 11:23
加载中...