社区讨论

90分求助!!!

P2010[NOIP 2016 普及组] 回文日期参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lz0vsjrx
此快照首次捕获于
2024/07/25 14:17
2 年前
此快照最后确认于
2024/07/25 15:16
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

bool huiwen(int a){
	string n = to_string(a);
	int right, left;
	left = 0;
	right = n.size()-1;
	bool x = 1;
	while (left < right){
		if (n[right] != n[left]){
			x = 0;
			break;
		}
		left++,  right--;
	}
	return x;
}
bool runnian(int n){
	if ((n%4 == 0 && n%100 != 0) || n%400 == 0){
		return 1;
	}else{
		return 0;
	}
}
int a, b, ans = 0;
int an, ay, ar;
int bn, by, br;
int yue[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
	cin >> a >> b;
	an = a/10000, ay = a/100%100, ar = a%100;
	bn = b/10000, by = a/100%100, br = a%100;
	for (int n = an; n <= bn; n++){
		if (runnian(n) == 1){
			yue[2] = 29;
		}else{
			yue[2] = 28;
		}
		for (int y = 1; y <= 12; y++){
			if (n == an && y < ay) continue;
			if (n == bn && y > by) break;
			for (int r = 1; r <= yue[y]; r++){
				if (n == an && y >= ay && r < ar) continue;
				if (n == bn && y <= by && r > br) break;
				int sum = n*10000+y*100+r;
				if (huiwen(sum) == 1) ans++;
			}
		}
	}
	cout << ans;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...