第十一届蓝桥杯省赛 C++ B组 - 回文日期

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📚专栏地址:蓝桥杯题解集合
📝原题地址:回文日期
📣专栏定位:为想参加蓝桥别的小伙伴整理常考算法题解,祝大家都能取得理想成绩!
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

**加粗样式**
这道题不能用暴力枚举所有数字来求解,因为部分答案会超时。我们可以直接枚举回文数字,因为这题只用判断是否是回文日期,我们可以直接枚举回文数的前四位,后四位可以用前四位得到,然后再分别判断是否满足日期要求即可。

#include <bits/stdc++.h>
using namespace std;

//判断是否是日期
bool check(int s) {
	int year = s / 10000, month = s % 10000 / 100, day = s % 100;
	int nums[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

	//判断除二月以外的日期
	if (month != 2 && (month == 0 || month > 12 || day == 0 || nums[month] < day))
		return false;

	//判断二月
	int leap = (year % 100 && year % 4 == 0) || year % 400 == 0;
	if (month == 2 && (day == 0 || nums[2] + leap < day))
		return false;

	return true;
}

//判断是否是回文日期
bool check1(string x) {
	return x[0] == x[7] && x[1] == x[6] && x[2] == x[5] && x[3] == x[4];
}

//判断是否是ABABBABA型回文日期
bool check2(string x) {
	return x[0] != x[1] && x[0] == x[5] && x[0] == x[7] && x[0] == x[2] && x[1] == x[3] && x[1] == x[4] && x[1] == x[6];
}

//将整数转换成字符串
string tostring(int x) {
	string num = "";
	while (x) {
		char k = x % 10 + '0';
		num = k + num;
		x /= 10;
	}
	return num;
}

int main() {
	int n, flag1 = 0, flag2 = 0;
	string ans1, ans2;
	cin >> n;
	n = n / 10000;
	//枚举所有回文数
	for (int i = n ; i <= 9999; i++) {
		int date = i, x = i;
		while (x) {
			date = date * 10 + x % 10;
			x /= 10;
		}
		string res = tostring(date);
		if (flag1 == 0 && check(date) && check1(res)) {
			ans1 = res;
			flag1 = 1;
		}
		if (flag2 == 0 && check(date) && check2(res)) {
			ans2 = res;
			flag2 = 1;
		}
		if (flag1 == 1 && flag2 == 1)
			break;
	}
	cout << ans1 << endl;
	cout << ans2 << endl;
	return 0;
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是第十四届蓝桥杯Python真题的部分内容: 一、选择题(每题5分,共40分) 1. 下列哪个不是Python的内置数据类型? A. int B. float C. char D. str 答案:C 2. 下列哪个不是Python的保留字? A. and B. or C. not D. xor 答案:D 3. 下列哪个不是Python的标准模块? A. os B. sys C. math D. timeit 答案:D 4. 下列哪个Python库可以用于科学计算? A. NumPy B. SciPy C. Matplotlib D. All of the above 答案:D 5. 下列哪个Python库可以用于机器学习? A. TensorFlow B. Keras C. PyTorch D. All of the above 答案:D 6. 下列哪个Python库可以用于爬虫? A. Requests B. BeautifulSoup C. Scrapy D. All of the above 答案:D 7. 下列哪个Python库可以用于图像处理? . OpenCV B. Pillow C. Scikit-image D. All of the above 答案:D 8. 下列哪个Python库可以用于游戏开发? A. Pygame B. Panda3D C. PyOpenGL . All of the above 答案:D 二、编程题(每题20分,共60分) 1. 编写一个Python程序,输入一个字符串,将其中的大写字母转换为小写字母,将其中的小写字母转换为大写字母,然后输出转换后的字符串。 2. 编写一个Python程序,输入一个整数n,输出n的阶乘。 3. 编写一个Python程序,输入一个字符串,判断该字符串是否为回文字符串。如果是回文字符串,则输出True,否则输出False。 以上是部分内容,完整的第十四届蓝桥杯Python真题可以在蓝桥杯官网上找到。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值