蓝桥杯第十一届省赛C++B组真题解析

news2025/4/18 15:12:15

蓝桥杯第十一届省赛C++B组真题解析


八、回文日期https://www.lanqiao.cn/problems/348/learning

方法一:暴力枚举所有的日期,记录有多少个回文日期。

#include <bits/stdc++.h>
using namespace std;
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int s[9];
bool find(int year){
  if(year%400==0||(year%4==0&&year%100!=0)) return true;
  else return false;
}
bool tell(int s1[]){
  bool flag = true;
  for(int i=0; i<8; i++){
    if(s1[i] != s1[7-i]){
      flag = false;
      break;
    }
  }
  return flag;
}
void transform(int num, int kk){
  if(kk==1){
    s[0] =  num/1000;
    s[1] =  num/100%10;
    s[2] =  num/10%10;
    s[3] =  num%10;
  }else if(kk==2){
    if(num<10) s[4] = 0;
    else s[4] = num/10 ;
    s[5] = num%10 ;
  }else if(kk==3){
    if(num<10) s[6] = 0;
    else s[6] = num/10 ;
    s[7] = num%10;
  }
}

int main()
{
  int ans=0;
  long long day1,day2;
  cin >> day1 >> day2;
  int y1 = day1/10000,y2=day2/10000;
  int m1 = day1%10000/100,m2=day2%10000/100;
  int d1 = day1%100,d2 = day2%100;
  
if(y2>y1){
//特判第一年 
	transform(y1,1);
	if(find(y1)) month[2] = 29;
    for(int i=m1; i<13; i++){
	  	transform(i,2);
	  	int j=1;
	  	if(i==m1) j = d1;
	  	for(; j<=month[i]; j++){
	  	
	  		transform(j,3);
	  		if(tell(s)) ans++;
		  }
  }
//特判最后一年
	transform(y2,1);
	if(find(y2)) month[2] = 29;
	for(int i=1; i<=m2; i++){
		transform(i,2);
		for(int j=1; j<=month[i]; j++){
			if(i == m2 && j>d2) break;
			transform(j,3);
			if(tell(s)) ans++;
		}
	} 
}else{
	transform(y2,1);
	if(find(y2)) month[2] = 29;
	for(int i=m1; i<=m2; i++){
		transform(i,2);
		int j=1;
		if(i==m1) j = d1;
		for(; j<=month[i]; j++){
			if(i == m2 && j>d2) break;
			
			transform(j,3);
			if(tell(s)) ans++;
		}
	}
}

  for(int i=y1+1;i<y2;i++){
    if(find(i)) month[2] =29;
    else month[2] = 28;
    transform(i,1);
	    for(int j=1; j<13; j++)
	    {
	     	transform(j,2);
		    for(int k=1; k<=month[j]; k++)
		    {
		        transform(k,3);
		        if(tell(s)) ans++;
		    }
	    }
  }
  cout << ans;

  return 0;
}

方法二:用月份和日枚举所有的回文日期,判断是否在有效日期内。

  ⚠️不用特判闰年,因为二月份反转的年份为20,一定为闰年.
#include<bits/stdc++.h>
using namespace std;
//预处理月份对应天数
int a[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int main(){
  int n,m;
  cin>>n>>m;
  int ans=0;
//根据月份和天数直接构造回文年份,看是是否在题目要求范围内
  for(int i=1;i<=12;i++){
    for(int j=1;j<=a[i];j++){
//年份
      int y=j%10*1000+(j/10)*100+i%10*10+i/10;
//年份+月份+天数组成的回文串
      int sum=y*10000+i*100+j;
      if(sum>m||sum<n) continue;
      else ans++;
    }
  }
  cout<<ans;
  return 0;
}

九、子串分值和https://www.lanqiao.cn/problems/1037/learning/

方法一:遍历+哈希表

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

int main()
{
  cin >> s;
  int cnt=0;
  for(int i=0; i<s.size(); i++){
    unordered_map<char,int> m;
      m[s[i]]++;
    for(int j=i; j<s.size(); j++){
      m[s[j]]++;
      cnt += m.size();
    }
  }
  cout << cnt;
  return 0;
}

方法二:
​​核心观察​​:
每个字符 s[i] 在某个子字符串中第一次出现时,会为该子字符串的不同字符数 贡献1。统计所有这样的贡献次数。
​​实现方法​​:
使用数组 last[26] 记录每个字母上一次出现的位置。
对于每个字符 s[i],计算它能在多少个子字符串中作为第一次出现的该字符。

#include <bits/stdc++.h>
using namespace std;
string s;
int o_last[26];//记录26个字母上一次出现的位置

int main()
{
  cin >> s;
  long long cnt=0;
  int l = s.size();
  memset(o_last, -1, sizeof(o_last)); 
  for(int i=0; i<l; i++){
      int last = o_last[s[i]-'a'];

      cnt += (long long)(l-i)*(i-last);//前一段乘后一段
      o_last[s[i]-'a'] = i;//更新s[i]最新出现的位置
    }
  
  cout << cnt;
  return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux主要开发工具之gcc、gdb与make

此系列还有两篇&#xff0c;大家想完整掌握可以阅读另外两篇 Linux文本编辑与shell程序设计-CSDN博客 Linux基础知识详解与命令大全&#xff08;超详细&#xff09;-CSDN博客 1.gcc编译系统 1.1 文件名后缀 文件名后缀 文 件 类 型 文件名后缀 文 件 类 型 .c C源…

C++初阶-C++入门基础

目录 ​编辑 1.C的简介 1.1C的产生和发展 1.2C的参考文档 1.3C优势和难度 1.4C学习的建议 2.C的第一个程序 2.1打印Hello world 2.2头文件 2.3namespace命名空间 2.4&#xff1a;&#xff1a;作用域限定符 2.5namespace的延伸 2.6C的输入输出 3.总结 1.C的简介 …

idea手动创建resources文件夹

有时maven没有构建成功可能造成&#xff0c;resources文件夹不创建的现象 此时我们可以手动创建 手动创建

第十五届蓝桥杯大赛软件赛省赛Python 大学 C 组题目试做(中)【本期题目:回文数组,挖矿】

OK&#xff0c;继续写我们的第十五届蓝桥杯大赛软件赛省赛Python 大学 C 组题目&#xff0c;后面的题目比较麻烦了&#xff0c;所以我们再分两期讲。 这一期的题有 &#xff1a; 回文数组&#xff0c;挖矿 文章目录 回文数组基本思路第一步&#xff0c;获取半个数组每个数需要…

Qt动画 QAbstractAnimation

文章目录 简介QVariantAnimation 数值动画QPropertyAnimation 属性动画 QAnimationGroup 一组动画QParallelAnimationGroup 并行动画组QSequentialAnimationGroup 串行动画组 简介 QAbstractAnimation 是所有 Qt 动画的基类。 该类定义了所有动画应该都会有的功能函数。 要想实…

SpringMvc的请求-获得请求参数

客户端请求参数的格式是: namevalue&namevalue..… 服务器端要获得请求的参数&#xff0c;有时还需要进行数据的封装&#xff0c;SpringMVC可以接收如下类型的参数: 基本类型参数 POJO类型参数 数组类型参数 集合类型参数 获得基本类型参数 Controller中的业务方法…

flutter开发音乐APP(前提准备)

1、项目的一些环境&#xff1a; 2、接口文档&#xff1a; 酷狗音乐 NodeJS 版 API 3、接口数据结构化 Instantly parse JSON in any language | quicktype UI样式借鉴参考&#xff1a; Coffee-Expert/Apple-Music-New-UI: Apple Music Clone on Flutter, with redesigned UI…

使用docker搭建redis镜像时云服务器无法访问到国外的docker官网时如何解决

下载redis镜像 docker redis:版本号 此时截图中无法访问到国外的docker官网 解决方案&#xff1a; 通过更换镜像源来正常下载redis镜像 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF {"registry-mirrors": ["https://docker.1…

双引擎驱动:解密音视频体验的QoS技术底座与QoE感官革命

QoS 定义&#xff1a;QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;衡量音视频传输技术层面的性能表现&#xff0c;聚焦网络传输和系统处理能力&#xff0c;通过客观指标量化服务质量。核心指标 码率/带宽&#xff1a;数据传输速率上限&#xff0c;直接…

pom导包成功,但是就是无法使用相关类,同时报错:Library:Maven ‘xxx‘ has broken path

开发环境&#xff1a;Intellij 2023 一、问题记录 在maven工程的pom文件导入如下某一依赖(JGit)。没有显示导包的错误&#xff0c;同时在maven仓库里面找到对应的包是正常下载到相应jar的。 但是就是无法引入相关的类。打开Project Structure&#xff0c;在Dependencies中发现…

mysql的下载和安装2025.4.8

mysql下载和安装 MySQL的下载网址&#xff1a; https://www.mysql.com/downloads/ 点击进入Windows版本下载&#xff1a;我们可以选择需要的MySQL版本以及所需的操作系统&#xff0c;这里选择离线安装&#xff1a; 注意&#xff1a;MySQL 8.0 是带有 MySQL Installer 的最后一…

QML Loader:延迟加载与动态切换

目录 引言相关阅读工程结构LoaderDelay.qml - 延迟加载实现完整代码HeavyComponent.qml代码解析运行效果 LoaderSwitch.qml - 动态切换组件完整代码代码解析运行效果 Main.qml - 主界面实现完整代码主界面结构代码解析 总结下载链接 引言 QML的Loader组件提供了一种强大的机制…

Spark Core编程

一 Spark 运行架构 1 运行架构 定义 Spark 框架的核心是一个计算引擎&#xff0c;整体来说&#xff0c;它采用了标准 master-slave 的结构 如图所示 2 核心组件 Spark 框架有两个核心组件: 1)Driver 2)Spark 驱动器节点&#xff08;用于执行 Spark 任务中的 main 方法&…

无人机装调与测试

文章目录 前言一、无人机基本常识/预备知识&#xff08;一&#xff09;无人机飞行原理无人机硬件组成/各组件作用1.飞控2.GPS3.接收机4.电流计5.电调6.电机7.电池8.螺旋桨9.UBEC&#xff08;稳压模块&#xff09; &#xff08;二&#xff09;飞控硬件简介&#xff08;三&#x…

【图书管理系统】全栈开发图书管理系统获取图书列表接口(后端:计算图书页数、查询当前页展示的书籍)

图书列表 实现服务器代码(计算图书总数量查询当前页需要展示的书籍) 后端响应时&#xff0c;需要响应给前端的数据 records&#xff1a;第 pageNum 页要展示的图书有哪些&#xff08;存储到List集合中&#xff09;total&#xff1a;计算一共有多少本书&#xff08;用于告诉前…

正则表达式补充——python

简介 本章是对前面正则表达式的补充。 一、复杂的查找替换等任务 content 张三是脑卒中病 李四&#xff0c;是高血脂 苏齐&#xff0c;是肺结核病 六六&#xff0c;是血血血血import re p re.compile(r...病) for one in p.findall(content):print(one) 运行结果&#xf…

[ctfshow web入门] web7

信息收集 题目提示&#xff1a;版本控制很重要&#xff0c;但不要部署到生产环境更重要。 那么很有可能&#xff0c;版本控制相关的信息被部署到环境了&#xff0c;比如比如version.txt记录了一些相关配件的版本&#xff0c;git版本管理工具中的.git文件夹未删除 信息收集就是…

DeepSeek-V3 API:开启下一代AI应用开发的新篇章

引言 在人工智能技术日新月异的今天&#xff0c;大型语言模型(LLM)正以前所未有的速度改变着我们与技术互动的方式。DeepSeek-V3作为国内领先的大语言模型之一&#xff0c;其API的开放为开发者提供了强大的AI能力集成方案。 DeepSeek-V3 API的核心优势 1.强大的语言理解与生…

go语言应该如何学习

以下是学习Go语言的高效路径及关键技巧&#xff0c;结合多个优质来源整理而成&#xff0c;适合不同基础的学习者&#xff1a; 一、基础语法快速入门&#xff08;1-2周&#xff09; 1、环境搭建 下载安装Go SDK&#xff0c;配置GOPATH和GOROOT环境变量&#xff0c;推荐使用Go…

NO.84十六届蓝桥杯备战|动态规划-路径类DP|矩阵的最小路径和|迷雾森林|过河卒|方格取数(C++)

路径类dp是线性dp的⼀种&#xff0c;它是在⼀个nm的矩阵中设置⼀个⾏⾛规则&#xff0c;研究从起点⾛到终点的⽅案数、最⼩路径和或者最⼤路径和等等的问题 矩阵的最小路径和_牛客题霸_牛客网 状态表⽰&#xff1a; dp[i][j]表⽰&#xff1a;到达[i, j]位置处&#xff0c;最⼩…