关于此题的疑问
查看原帖
关于此题的疑问
852144
Loser_Syx楼主2023/6/27 10:24

已 AC,但是

#include <bits/stdc++.h>
using namespace std;
int day, month, year;
inline void read(){
	char c = getchar();
	while(c >= '0' && c <= '9'){
		day = (day << 1) + (day << 3) + (c ^ '0');
		c = getchar();
	}
	string month2 = "";
	while(c > '9' || c < '0'){
		month2 += c;
		c = getchar();
	}
	if(month2 == "JAN") month = 1;
	if(month2 == "FEB") month = 2;
	if(month2 == "MAR") month = 3;
	if(month2 == "APR") month = 4;
	if(month2 == "MAY") month = 5;
	if(month2 == "JUN") month = 6;
	if(month2 == "JUL") month = 7;
	if(month2 == "AUG") month = 8;
	if(month2 == "SEP") month = 9;
	if(month2 == "OCT") month = 10;
	if(month2 == "NOV") month = 11;
	if(month2 == "DEC") month = 12;
	while(c >= '0' && c <= '9'){
		year = (year << 1) + (year << 3 ) + (c ^ '0');
		c = getchar();
	}
	return ;
}
inline int check_year(int y){
	if(y % 400 == 0 || (y % 100 != 0 && y % 4 == 0)) return 366;
	return 365;
}
inline int check_month(int y, int m){
	if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) return 31;
	if(m == 4 || m == 6 || m == 9 || m == 11) return 30;
	//if(y % 400 == 0 || (y % 100 != 0 && y % 4 == 0)) return 29;
	if(y % 400 == 0 || (y % 4 == 0)) return 29;
	return 28;
}
inline int check_month2(int y, int m){
	if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) return 31;
	if(m == 4 || m == 6 || m == 9 || m == 11) return 30;
	if(y % 400 == 0 || (y % 100 != 0 && y % 4 == 0)) return 29;
	return 28;
}
main(){
	read();
	//printf("%d %d %d\n", year, month, day);
	if(year < 1582 || (year == 1582 && month < 10) || (year == 1582 && month == 10 && day <= 4)){
		int ans = 0;
		for(int i = 1; i < year; i++) for(int j = 1; j <= 12; j++) ans += check_month(i, j);
		for(int j = 1; j < month; j++) ans += check_month(year, j);
		ans += day;
		printf("%d", ans - 1);
	}else{
		long long ans = 0;
			for(int i = 1; i < year; i++) ans += check_year(i);
			for(int j = 1; j < month; j++) ans += check_month2(year, j);
			ans += day;
		printf("%lld", ans+1);// 看我看我
	}
	return 0;
}

为什么这里要 +1 不是 -1 啊

2023/6/27 10:24
加载中...