有没有佬帮看看为什么会WA三个点呢?
查看原帖
有没有佬帮看看为什么会WA三个点呢?
350602
tachikoma楼主2024/4/13 23:29
#include<iostream>
#include<string>
using namespace std;
int fr, bk;
int month, day;
int bDay, bMonth;
int isRun(int a) {
	bool case1 = a * 1.0 / 4 > 0 && a % 100!=0;
	bool case2 = a * 1.0 / 400 == 0;
	if (case1 ^case2) {
		return 1;
	}
	else
		return 0;

}
int getMonth(int a) {
	return a / 10000 % 100;

}
int getDay(int a) {
	return a / 1000000;
}
int getYear(int a) {
	return a / 10000;
}
int getbDay(int a) {
	int day = getDay(a);
	day = day / 10 + day % 10 * 10;
	return day;
}
int getbMonth(int a) {
	int month = getMonth(a);
	month = month / 10 + month % 10 * 10;
	return month;
}
int newDay(int a) {
	int bd = getbDay(a);
	int bm = getbMonth(a);
	return a / 10000 * 10000 + bm * 100 + bd;

}
int main() {
	cin >> fr >> bk;
	int cnt = 0;
	while (fr <= bk) {
		bMonth = getbMonth(fr);
		bDay = getbDay(fr);
		if (0 < bMonth &&bMonth < 13 && bDay<32&&0 < bDay) {
			if (bMonth == 1 || bMonth == 3 || bMonth == 5 || bMonth == 7 || bMonth == 8 || bMonth == 10 || bMonth == 12) {
				if (newDay(fr) >= fr && newDay(fr) <= bk)
					cnt++;

			}else if(bMonth==2){
				if (bDay < 29) {
					if (newDay(fr) >= fr && newDay(fr) <= bk)
						cnt++;
				}else if (bDay == 29) {
					if (isRun(getYear(fr))) {
						if (newDay(fr) >= fr && newDay(fr) <= bk)
							cnt++;
					}
				}
				
			
			}
			else {
				if (bDay < 31)
					if (newDay(fr) >= fr && newDay(fr) <= bk)
						cnt++;



			}


		}
		fr +=10000;
	}
	cout << cnt << endl;


	return 0;
}
2024/4/13 23:29
加载中...