求助大佬,后5个点全爆了
查看原帖
求助大佬,后5个点全爆了
759274
Stevehim楼主2022/10/3 22:20

RT

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
using namespace std;


int check(string mon, string da) { //检查回文数
	int month = stoi(mon), day = stoi(da);
//	cout << month << ' ' << day << endl;
	if (month == 0 || month > 12)
		return 0;
	if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && day > 31)
		return 0;
	if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30)
		return 0;
}


int year1, month1, day1;
int year2, month2, day2;

int sheng(string year4) {
	string year3 = year4;
	reverse(year3.begin(), year3.end());
	string month, day;
	month += year3[0];
	month += year3[1];
	day += year3[2];
	day += year3[3];
//	cout << "year3=" << year3 << ' ' << month << ' ' << day << endl;
	if (!check(month, day)) {
		return 0;
	}
	if (year4 == to_string(year1)) { //开判断
//		cout << "ok" << endl;
		if (stoi(month) >= month1 && stoi(day) >= day1) {
			return 1;
		} else {
			return 0;
		}
	} else if (year4 == to_string(year2)) {
		if (stoi(month) <= month2 && stoi(day) <= day2) {
			return 1;
		} else {
			return 0;
		}
	} else {
		return 1;
	}
}
int sum = 0;

int main() {
	scanf("%4d%2d%2d", &year1, &month1, &day1);
//	cout << year1 << ' ' << month1 << ' ' << day1 << endl;
	scanf("%4d%2d%2d", &year2, &month2, &day2);
//	cout << year1 << ' ' << month1 << ' ' << day1 << endl;
	//判断之间的年数,生成回文数
	for (int i = year1; i <= year2; i++ ) {
		if (sheng(to_string(i))) {
			sum++;
		}
	}
	cout << sum;
	return 0;
}

2022/10/3 22:20
加载中...