蓝桥杯第七届大学B组详解

目录

1.煤球数量;

2.生日蜡烛;

3.凑算式

4.方格填数

5.四平方和

6.交换瓶子

7.最大比例


1.煤球数量

题目解析:可以根据·题目的意思,找到规律。

1     *-  1个

2    ***   3个

3   ******  6个

4 ********** 10个

不难发现 第一层的个数加上第二层的层数就是第二层的煤球数目。本质就是找规律数学。

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

2.生日蜡烛

题目解析:直接枚举就行;

#include<iostream>
using namespace std;
int main()
{for (int i = 1;i <= 100; i++){int sum = 0;for (int j = i; j <= 100; j++){sum += j;if (sum == 236)cout << i << endl;}}return 0;
}

3.凑算式

题目解析:是不是和三羊献瑞有点像,又可以使用next_premutation();

注意这个题目弄错了是1-9数字;md我就整整调试1个多小时,心态差点崩溃了,都开始怀疑自己了。

using namespace std;
#include<iostream>
#include<algorithm>int ret = 0;
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};bool check()
{int x = a[3] * 100 + a[4] * 10 + a[5];int y = a[6] * 100 + a[7] * 10 + a[8];if(((a[1] * y) + (a[2] * x)) % (a[2] * y) == 0 && a[0] + ((a[1] * y) + (a[2] * x)) / (a[2] * y) == 10){return true;}else{return false;}
}int main()
{do{if(check()){ret++;}}while(next_permutation(a, a + 9));cout << ret << endl;return 0;
}

4.方格填数

题目解析:动态规划类型题目,就是在方格中填数,如果这个方格没有被使用过并且方格相邻不重复就将数字填进去,填完就是一种方案数。累计方案数。

细节:初始化为-20,因为如果为填9就算相邻区分不出来。

#include <iostream>
#include<bits/stdc++.h>
using namespace std;//方格矩阵,因为要使用到相邻的元素所以就会使用到就多创建行列
// -20   -20  -20-20
//    +--+--+--+
//    |  |  |  | -20
// +--+--+--+--+
// |  |  |  |  | -20
// +--+--+--+--+
// |  |  |  |    -20
// +--+--+--+
//-20  -20 -20 -20 -20
int a[4][5];
//判断是否被使用过
int vis[10];
int sum = 0;
int dx[4] = {-1, -1, -1, 0};
int dy[4] = {0, 1, -1, -1};bool check(int x, int y, int num)
{for(int i = 0; i < 4; i++){int xx = dx[i] + x;int yy = dy[i] + y;//边界检查if(xx < 3 && xx >= 0 && yy < 4 && yy >= 0){//如果相邻的话那么相差一定为1;if(abs( a[xx][yy] - num ) == 1)return false;}}return true;
}void dfs(int x, int y)
{//出口:第二行第三列if(x == 2 &&  y == 3){sum++;return;}//开始填数for(int i = 0; i < 10; i++){//判断没被使用过的方格并且不相临if(vis[i] == 0 && check(x, y, i)){vis[i] = 1;a[x][y] = i;//递归下一个方格,或者下一行if(y + 1 < 4)dfs(x, y + 1);elsedfs(x + 1, 0);//回溯vis[i] = 0;}}
}int main()
{//矩阵初始for(int i = 0; i < 4; i++){for(int j = 0; j < 4; j++){a[i][j] = -20;}}//从第0行第一列开始;dfs(0,1);cout << sum << endl;return 0;
}

5.四平方和

题目解析:可以想到暴力枚举的方法,复杂度为0(n^4)是非常恐怖的,那么就要想办法降低;就需要优化。

首先要知道 N=  a*a + b*b + c*c + d*d;

那么 a 一定不会超过 N / 4; b 一定不会超过 N / 3; c 一定不会超过 N / 2;

d 一定不会超过 N; 

其次我们可以先算 a 和 b,那么 N - a*a + b*b = c*c + d*d;

#include <iostream>
#include<map>
#include<cmath>
using namespace std;int main()
{//输入int N; cin >> N;map<int,int> exit;//c值存一下。for(int c = 0; c * c <= N / 2; c++){for(int d = c; c*c + d*d <= N; d++){if(exit.find(c * c + d * d) == exit.end())exit[c * c + d * d] = c;}}for(int a  = 0; a * a <= N / 4; a++){for(int b = a; a*a + b*b <= N / 3; b++){if(exit.find(N - a * a - b * b) != exit.end()){int c = exit[N - a * a - b * b];int d = (int)sqrt(N - a*a - b*b - c*c);cout << a << b << c << d << endl;//找到直接返回return 0;}}}return 0;
}

6.交换瓶子

题目解析:是不是会想到冒泡,但是你看看数据范围,那么就是肯定要优化;将当前元素与下标进行比较,如果相同直接跳过,不相同那么就要找到和下标相同的数据下标进行交换。

#include<iostream>using namespace std;
int a[10001];
int N;
int sum = 0;int pos(int x)
{for(int i = 1; i <= N; i++){if(a[i] == x){return i;}}return -1;
}void Swap(int i, int j)
{int tmp = a[i];a[i] = a[j];a[j] = tmp;
}int main()
{//数据处理;cin >> N;for(int i = 1; i <= N; i++){cin >> a[i];}//进行查寻for(int i = 1; i <= N; i++){if(a[i] == i)continue;else{//找到和下标不一样的数,和下标交换,不需要改变原来的值。Swap(pos(i), i);sum++;}}cout << sum << endl;return 0;
}

 7.最大比例

题目解析:本道题说到所有级别的奖金构成一个等比数列,先进行排序,将第一个数作为分母,分子分别都是后面的数,求取他们的最大公约数,再用两个数组将分子分母分别除以最大公约数,再存放起来。最后再对分子分母分别求差最小就会得到最终答案。

#include <iostream>
#include<algorithm>
using namespace std;#define N 100
long long max = 1000000000;
long long x[N], a[N], b[N];long long gcd(long long a, long long b)
{return b ? gcd(b, a % b) : a;
}long long gcd_sub(long long a, long long b)
{if(b == 1) return a;if(b > a)  swap(a, b);return gcd_sub(b, a / b);
}int main()
{//输入完成:int n;cin >> n;for(int i = 0; i < n; i++){cin >> x[i];}//排序sort(x, x + n);long long dd;//求最大公约数int cnt = 0;for(int i = 1; i < n; i++){if(x[i] != x[i-1]) //去除为1的情况{dd = gcd(x[i], x[0]);a[cnt] = x[i] / dd; //分子b[cnt] = x[0] / dd; //分母cnt++;}}long long up = a[0], down = b[0];for(int i = 1; i < cnt; i++){up = gcd_sub(up, a[i]);down = gcd_sub(down, b[i]);}cout << up << "/" << down;return 0;
}

其实静下心来感受会觉得题目不难,就是要找到规律,总结方法,写代码注意细节,那么绝对可以取得高分。

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

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

相关文章

安科瑞路灯安全用电云平台解决方案【电不起火、电不伤人】

背景介绍 近年来 &#xff0c;随着城市规模的不断扩大 &#xff0c;路灯事业蓬勃发展。但有的地方因为观念、技术、管理等方面不完善 &#xff0c;由此引发了一系列安全问题。路灯点多面广 &#xff0c;一旦漏电就极容易造成严重的人身安全事故。不仅给受害者家庭带来痛苦 &am…

计算方法实验3:反幂法求按模最小特征值及特征向量

Task Algorithm LU-Doolittle分解 A L U \mathbf{A}\mathbf{L}\mathbf{U} ALU 其中 L \mathbf{L} L为单位下三角阵, U \mathbf{U} U为上三角阵. 则 A x b \mathbf{A}\mathbf{x}\mathbf{b} Axb可化为 L U x L y b \mathbf{L}\mathbf{U}\mathbf{x}\mathbf{L}\mathbf{y}\math…

STM32的简介

内存 一般MCU包含的存储空间有FLASH和RAM,&#xff08;RAM和flash又有片上和片外的区别&#xff0c;片上表示mcu自带的&#xff0c;已经封装在MCU内部的&#xff0c;片外表示外挂的&#xff0c;当项目中需要做一些复杂的应用&#xff0c;会存在资源不足的情况&#xff0c;这时…

JavaScript基础语法–变量

文章目录 认识JavaScript变量程序中变量的数据&#xff08;记录&#xff09;–变量变量的命名格式在Java script中变量定义包含两部分1. 变量声明&#xff08;高级JS引擎接下来定义一个变量&#xff09;2. 其他的写法 变量命名的规范&#xff08;遵守&#xff09;变量的练习a. …

RocketMQ与Spring Boot完美结合:事务消息的全面解析

生产者端 业务场景&#xff1a;考虑一个在线电商平台的订单支付业务场景&#xff0c;该场景中我们需要处理用户的支付操作并确保订单状态的更新与库存减少这两个操作要么同时成功&#xff0c;要么同时失败&#xff0c;以保证数据的一致性。我们将使用RocketMQ事务消息来实现这…

【微信】公众号开发

文章目录 概述与微信交互环境准备开发者工具 注册公众号服务器基本配置存取access_token示例代码来源 概述 不同类型公众号主要区别 与微信交互 实际上我们在公众号里的所有操作&#xff0c;都会发送到微信的服务器上&#xff0c;微信服务器将这些动作的具体含义按照一定的…

JavaScript的使用

一&#xff0c;JavaScript的介绍 1.1 简介 网页开发唯一可选语言 增加网页动态性与交互性 服务端开发 可以对数据库文件读写 1.2 引入 html内部使用script标签 在script在外部文件中填写 在外部文件中填写 在html内部通过script的src属性引入外部js内部直接编写js 二&…

PWM波输出-定时器输出比较单元

目录 1&#xff0c;前言 2&#xff0c;实现过程 2.1 比较部分 2.2 输出部分 1&#xff0c;前言 电平&#xff0c;作为单片机的“肌肉”&#xff0c;承担着实践单片机的“想法“的重要任务。而PWM波&#xff0c;则是电平这个大类的重中之重&#xff0c;可以说&#xff0c;没…

VUE 视图不刷新解决方法

折腾VUE总会遇到这种问题&#xff0c;一直以来都是想用各种方法凑合&#xff0c;网上一般也是方法各异&#xff0c;像this.$updateForce强制刷新视图&#xff08;基本无效&#xff09;&#xff0c;还有用vue的set方法、js的splice方法设置数据&#xff0c;但这并不能解决所有问…

当代深度学习模型介绍--门控循环单元(GRUs)

AI大模型学习 方向一&#xff1a;AI大模型学习的理论基础 模型和应用的多样化&#xff1a;随着研究的深入&#xff0c;深度学习领域出现了多种创新的模型架构&#xff1a; 卷积神经网络&#xff08;CNNs&#xff09;专门针对图像处理任务进行了优化&#xff0c;通过模拟生物视…

STM32的芯片无法在线调试的情况分析

问题描述 本博客的目的在于帮助网友尽快地解决问题&#xff0c; 避免浪费时间&#xff0c; 查漏补缺。 在stm32的开发过程中&#xff0c;有时会遇到"STM No Target connected"的错误提示&#xff0c;这说明MDK开发环境无法与目标设备进行通信&#xff0c;导致无法烧…

YOLOv9改进策略 :注意力机制 | 注意力机制与卷积的完美融合 | 最新移动端高效网络架构 CloFormer

💡💡💡本文改进内容: 引入CloFormer 中的 AttnConv,上下文感知权重使得模型能够更好地适应输入内容。相比于局部自注意力机制,引入共享权重使得模型能够更好地处理高频信息,从而提高性能。 💡💡💡注意力机制与卷积的完美融合 AttnConv | 亲测在多个数据集能够…

15.三数之和

题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。注意&#xff1a;答案中不可以包含重复的三元组。示例 …

windows安全中心设置@WindowsDefender@windows安全中心常用开关

文章目录 abstractwindows defender相关服务&#x1f47a; 停用windows Defender临时关闭实时防护使用软件工具关闭defender control(慎用)dismdControl 其他方法使其他杀毒软件注册表修改 保护历史恢复被认为是有病毒的文件添加信任目录,文件,文件类型或进程 abstract window…

算法复习:链表

链表定义 struct ListNode { int val;ListNode *next;ListNode(int x) : val(x), next(nullptr) {} }; 链表的遍历&#xff1a;ListNode phead; while(p!null) pp.next; 找到链表的尾结点&#xff1a;phead; while(p.next!null)pp.next; 链表节点的个数&#xff1a; phead…

java 继承extends

权限 子类会自称父类所有的非私有的成员变量和方法&#xff08;不包括缺省和protected&#xff09;权限修饰符的种类如下&#xff1a; 上面說的protected 方法可以被任意包的子类中使用&#xff0c;但是子类的的实例不能使用&#xff0c;因为没有继承&#xff0c;否则报错。 继…

mongodb中的字符串排序

前言 数据库有一索引字段&#xff0c;ObjectId与string类型混用。 需要辨明sort后的排序关系。 输入 [{"_id": {"$oid": "e98799a7e181225ad5c87476"} }, {"_id": {"$oid": "e98799a7e181225ad5c87477"} }, {&…

lab-1:Xv6 and Unix utilities

实验工具 clone实验源码 git clone git://g.csail.mit.edu/xv6-labs-2023进入目录 cd xv6-labs-2023运行内核 make qemu打印数据 Ctrl-p退出 ctrax xv6中的system call int fork() Create a process, return child’s PID. int exit(int status) Terminate the current p…

腾讯云2核4G服务器优惠价格165元一年,限制500GB月流量

腾讯云轻量2核4G5M服务器租用价格165元1年、252元15个月、三年900元&#xff0c;配置为轻量2核4G5M、5M带宽、60GB SSD盘、500GB月流量、上海/广州/北京&#xff0c;腾讯云优惠活动 yunfuwuqiba.com/go/txy 腾讯云轻量2核4G5M服务器租用价格 腾讯云&#xff1a;轻量应用服务器1…

RecyclerView 调用 notifyItemInserted 自动滚动到底部的问题

项目中发现一个奇怪的现象 RecyclerView 加载完数据以后&#xff0c;调用 notifyItemInserted 方法&#xff0c;RecyclerView 会滑动到底部。 简化后的效果图&#xff1a; 因为这个 RecyclerView 的适配器有一个 FootViewHolder&#xff0c;所以怀疑是 FootViewHolder 的问题…