蓝桥杯第十一届c++大学B组详解

目录

1.字符串排序

2.门牌制作

3.即约分数

4.蛇型填数

5.跑步锻炼

6.七段码

7.成绩统计

8.回文日期

9.字串分值和

10.平面切分


1.字符串排序

 题目解析:这个题目真没搞懂。有会的大佬教我一下谢谢。

2.门牌制作

题目解析:出过超级多这类题目,就是每位检查有2.

#include <iostream>
using namespace std;int add(int x)
{int sum = 0;while(x){int t = x % 10;if(t == 2)sum++;x /= 10;}return sum;
}int main()
{int Sum = 0;for(int i = 1; i <= 2020; i++){Sum += add(i);}cout << Sum << endl;return 0;
}

3.即约分数

 题目解析:就是求公约数==1;

#include <iostream>
using namespace std;int gcd(int a, int b)
{return b ? gcd(b, a % b) : a;
}int main()
{int ans = 0;for(int i = 1; i <= 2020; i++){for(int j = 1; j <= 2020; j++){if(gcd(i, j) == 1){ans++;}}}cout << ans << endl;return 0;
}

4.蛇型填数

 题目解析:就是找规律,

第一行第一列:1

第二行第二列:1+1*4 = 5;

第三行第三列:1 + 1*4 + 2 * 4= 13;

...

所以第二十行第二十列:

1+1*4 + 2*4 + 3 *4 + ...+ 19*4;

#include <iostream>
using namespace std;int main()
{int n = 20;int sum = 1;for(int i = 0; i < 20; i++){sum += i * 4;}cout << sum << endl;return 0;
}

5.跑步锻炼

题目解析:日期类问题。

#include <iostream>
using namespace std;int ans = 0;
int Month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main()
{int year = 2000; int month = 1; int day = 1; int weekday = 6;while(1){ans += (weekday == 1 || day == 1) + 1;if(year == 2020 && month == 10 && day == 1){break;}day++;weekday = (weekday + 1) % 7;if(month == 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)){if(day > Month[month] + 1){day = 1;month += 1;}}else if(day > Month[month]){day = 1;month += 1;}if(month == 13){month = 1;year += 1;}}cout << ans << endl;return 0;
}

6.七段码

 题目解析:将相邻的边全部放到矩阵当中,采用dfs深搜,将每种每一层进行遍历,方法进行记录并且加和。

#include <iostream>
using namespace std;int graph[7][7] = {//转化成矩阵{1,1,0,0,0,1,0},{1,1,1,0,0,0,1},{0,1,1,1,0,0,1},{0,0,1,1,1,0,0},{0,0,0,1,1,1,1},{1,0,0,0,1,1,1},{0,1,1,0,1,1,1}
};int f[7] = { 0 };
int dfs(int n, int i) 
{int sum = 1;for (int k = 0; k < n; k++){if (graph[i][k] == 1 && f[k] == 0){f[k] = 1;sum +=dfs(7, k);f[k] = 0;//回溯}}return sum;
}
int main()
{cout << dfs(7, 0) / 2;return 0;
}

7.成绩统计

 题目解析:简单统计

#include <iostream>
using namespace std;
int main()
{double a = 0;double b = 0;double c;cin >> c;int n;for (int i = 0; i < c; i++){cin >> n;if (n >= 60){a++;}if (n >= 85){b++;}}int x =(a * 100.0)/c+0.5;int y =(b * 100.0)/c+0.5;cout << x << "%" << endl << y << "%";return 0;
}

8.回文日期

题目解析:可以先找到年份在输入年份之间,再对于年份逆置变成月份和日份,并且符合真正日历时间就是一种答案。

#include<iostream>using namespace std;
int daymonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check(int date)
{int year = date / 10000;int month = (date / 100) % 100;int day = date % 100;if(month < 0 || month > 12) return false;if(day ==0 || month != 2 && day > daymonth[month]) return false;if(month == 2 ){int leap = year % 100 && year % 4 == 0 || year % 400 == 0;if(day > daymonth[month] + leap) return false;}
}int main()
{int date1, date2;cin >> date1 >> date2;int ans = 0;for(int i = 1000; i <= 10000; i++){//年份范围int date = i, x = i;for(int j = 0; j < 4; j ++ )    date = date * 10 + x % 10, x /= 10;if(date1 <= date && date <= date2 && check(date)){ans++;}}cout << ans << endl;return 0;
}

9.字串分值和

题目解析: 题目意思可以用一个例子来表示:

f[a] = 1;

f[ab] = 2;

f[aba] = 1;

那么就是相同的字符就会影响贡献点。那么就要想到不把相同的字符放到一起求f[]。

axxxxaxxxxa

那么就要将再次出现的字符和前一次出现的字符之间的字符进行放到f[]求贡献点以及与长度进行相乘。

#include <iostream>
#include<cstring>
using namespace std;int num[26];
int main()
{string s;cin >> s;int len = s.size();memset(num, -1, sizeof(num));long long ans = 0;for(int i = 0; i < len; i++){ans += (long long)(i - num[s[i] - 'a']) * (len - i);num[s[i] - 'a'] = i;}cout << ans << endl;return 0;
}

10.平面切分

 题目解析:根据下面的图片可以分析出来规律。

(1)如果线是重合不增加面的个数;

(2)线相互平行就在原来基础增加一个面;

(3)相交(但是交点不重合)原来基础增加一个面;

(4)相交(焦点重合)增加一个面。

#include<bits/stdc++.h>
using namespace std;
double A[100005];
double B[100005];
double x[100005];
double y[100005];
int zll(int n)
{//进入该函数,寻找第n条直线与其他直线相交或平行的情况 int remark,num=1;//进入该函数至少加1,所以初始化为1 ,也是整体+1 for(int j=0;j<n;j++){if(A[n]==A[j]) continue;//第n条直线与前面j条平行,跳入下一次循环,因为平行只增加一个平面 remark=0;	              //若是第n条直线碰到第2条甚至更多平行的直线,不再增加新的平面 x[j]=(B[n]-B[j])/(A[j]-A[n]);//执行到这里只剩下了两种情况,一种是第n条直线与第j条直线相交产生了新的交点 y[j]=A[n]*x[n]+B[n];         //第二种是第n条直线与第j条直线相交,却交到了第j条与其它直线相交的旧交点上 for(int k=0;k<j;k++){if(x[j]==x[k]&&y[j]==y[k]){remark=1;//这是第2种情况,不再+1 }}if(remark!=1){num++;//不是第2种情况就是第1种情况,产生一个新交点我就再+1 }}return num;
}
int main(){int n,mark=0,sum=1;cin>>n; for(int i=0;i<n;i++){cin>>A[i]>>B[i];mark=0;for(int j=0;j<i;j++){if(A[i]==A[j]&&B[i]==B[j]){//遍历第i条线的前面i-1条是否重复 mark=1;break;}}if(mark==1)//只要找到重复的,直接跳到下一次循环 continue;//此时实际并没有产生新的平面 ,排除掉了唯一不增加平面的情况 if(i==0){sum=2;}else{//进入else内部每一次相加,zll()的值最少为1 sum=sum+zll(i);}}cout<<sum;return 0;
}

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

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

相关文章

NumPy进阶(二)

2. NumPy进阶(二) 2.1 Numpy数组操作 2.1.1 添加元素 numpy.append 函数在数组的末尾添加值。 追加操作会分配整个数组&#xff0c;并把原来的数组复制到新数组中 注意&#xff1a; 插入的维度要保证所有数组的长度是相同的如果没有指定轴&#xff0c;数组会被扁平处理 ndarr…

第四百四十九回

文章目录 1. 知识回顾2. 使用方法3. 示例代码4. 经验与总结4.1 经验分享 我们在上一章回中介绍了"overlay_tooltip简介"相关的内容&#xff0c;本章回中将再谈flutter_launcher_icons包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 知识回顾 我们第四百一十…

docker安装nodejs

要在 Docker 中安装 Node.js&#xff0c;你可以使用官方提供的 Node.js 镜像。以下是在 Docker 中安装 Node.js 的基本步骤&#xff1a; 拉取 Node.js 镜像&#xff1a; docker pull node 运行 Node.js 镜像&#xff1a; docker run -it node 确认 Node.js 是否成功安装&…

教你如何玩转副业:开启编程副业新篇章

前言 在浩瀚的编程海洋中&#xff0c;C语言以其简洁、高效、贴近硬件的特性&#xff0c;成为无数程序员心中的“白月光”。作为一位程序员&#xff0c;如果你不仅掌握了这门语言的精髓&#xff0c;更渴望通过副业来挑战自我、实现价值。那么&#xff0c;如何用C语言开启你的副…

题目:取一个整数a从右端开始的4~7位。

题目&#xff1a;取一个整数a从右端开始的4&#xff5e;7位。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being…

pta L1-010 比较大小

L1-010 比较大小 分数 10 全屏浏览 切换布局 作者 杨起帆 单位 浙大城市学院 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出&#xff0c;其间以“->”相连。…

【力扣】209. 长度最小的子数组

209. 长度最小的子数组 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 …

A7 STM32_HAL库函数 之 LCORTEX通用驱动程序所有函数的介绍及使用

A1 STM32_HAL库函数 之 HAL系统驱动程序所有函数的介绍及使用 1 LCORTEX通用驱动程序预览1.1 HAL_NVIC_SetPriorityGrouping1.2 HAL_NVIC_SetPriority1.3 HAL_NVIC_EnableIRQ1.4 HAL_NVIC_DisableIRQ1.5 HAL_NVIC_SystemReset1.6 HAL_SYSTICK_Config1.7 HAL_MPU_Disable1.8 HAL…

亚信安慧AntDB:在数据的宇宙中探索无限可能

亚信安慧AntDB数据库探索出自主可控的数据库架构&#xff0c;在架构层面消除应用对特定数据库的依赖。它以其稳定可靠的性能和高度可伸缩性而备受赞誉。AntDB数据库架构通过引入创新的分布式体系结构&#xff0c;充分利用集群资源&#xff0c;实现数据的高效分布和快速存取。 …

浅谈对进程的理解

一、多任务的概念 1、举个栗子 思考&#xff1a;我们在使用网盘下载资料的时候&#xff0c;为什么要多个任务同时下载呢&#xff1f; 答&#xff1a;多个任务同时执行可以大大提高程序的执行效率 2、提出问题 问题&#xff1a;利用我们目前所学的技术&#xff0c;我们能否…

输入框验证数字类型

校验大于0的数,且小数点后最多为八位小数 let k /^(?!0(\.0)?$)\d(\.\d{1,8})?$/; console.log(k.test(0.00000001)); // true console.log(k.test(0.00000000)); // false console.log(k.test(0.12)); // true console.log(k.test(12.12)); // true输入0-1的数字&#xf…

【计算机考研】408算法大题怎么练?

先说结论&#xff1a;基础阶段学好各个数据结构与&#xff0c;重点是数组、链表、树、图。然后强化阶段突破算法提 在基础阶段&#xff0c;并不需要过于专门地练习算法。相反&#xff0c;基础阶段的重点应该放在对各种数据结构原理的深入理解上。在我个人的经验中&#xff0c;…

python--异常处理

异常处理 例一&#xff1a; try: #可能出现异常代码 except&#xff1a; #如果程序异常&#xff0c;则立刻进入这儿 [finally: #不管是否捕获异常&#xff0c;finally语法快必须要执行&#xff01;&#xff01;&#xff01; #资源关闭&#xff0c;等各种非常重要的操作&…

HarmonyOS实战开发-如何使用 geolocation 实现获取当前位置经纬度

介绍 本示例使用 geolocation 实现获取当前位置的经纬度,然后通过 http 将经纬度作为请求参数,获取到该经纬度所在的城市。通过 AlphabetIndexer 容器组件实现按逻辑结构快速定位容器显示区域。 效果预览 使用说明 1.进入主页,点击国内热门城市,配送地址会更新为选择的城…

【Erlang】【RabbitMQ】Linux(CentOS7)安装Erlang和RabbitMQ

一、系统环境 查版本对应&#xff0c;CentOS-7&#xff0c;选择Erlang 23.3.4&#xff0c;RabbitMQ 3.9.16 二、操作步骤 安装 Erlang repository curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash安装 Erlang package s…

CAXA电子图版2019版 下载地址及安装教程

CAXA电子图板是一款由国内软件公司CAXA开发的专业CAD&#xff08;计算机辅助设计&#xff09;软件。它主要用于绘制和编辑各种类型的二维图纸和工程图纸&#xff0c;广泛应用于建筑、机械、电气和电子等行业。 CAXA电子图板具有以下主要功能和特点&#xff1a; 二维绘图&…

Godot 常用UI+布局容器简单介绍

文章目录 前言相关链接Canvasitem&#xff1a;画布Control&#xff1a;UI布局基类Container&#xff1a;布局容器基类AspectRatioContainer&#xff1a;伸缩居中布局BoxContainer&#xff1a;盒子布局ColorPicker:取色器 CenterContainer&#xff1a;不伸缩居中FlowContainer&a…

Java 那些诗一般的 数据类型 (下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

【RAG实践】Rerank,让大模型 RAG 更近一步

RAGRerank原理 上一篇【RAG实践】基于LlamaIndex和Qwen1.5搭建基于本地知识库的问答机器人 我们介绍了什么是RAG&#xff0c;以及如何基于LLaMaIndex和Qwen1.5搭建基于本地知识库的问答机器人&#xff0c;原理图和步骤如下&#xff1a; 这里面主要包括包括三个基本步骤&#…

MySQL数据库在Windows和Linux中各种日志的默认路径

1. 二进制日志&#xff08;Binary Log&#xff09; 在Linux系统中&#xff0c;二进制日志的默认路径通常为&#xff1a; /var/lib/mysql/hostname-bin.log 其中hostname是你的服务器主机名。如果没有特别配置&#xff0c;日志名可能是mysql-bin.log。 在Windows系统中&…