蓝桥杯第七届大学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);
            else
               dfs(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;
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

教培机构办公管理系统B端实战项目作品集Figma源文件

这是一套教培机构办公管理系统设计复盘作品集&#xff0c;都提供分层源文件 交付文件&#xff1a;设计复盘作品集源文件作品集里面的B端设计项目包装样机字体文件 交付格式&#xff1a;figma 作品集文件页数&#xff1a;19页 B端项目文件页数&#xff1a;15页 B端项目源文…

linux文件系统:VFS

文章目录 vfs1 super_block2 dentry2.1 dentry树2.2 dentry的cache2.3 挂载 3 inode4 文件file5 vfs各结构体的关系 vfs Linux内核通过虚拟文件系统&#xff08;Virtual File System&#xff0c;VFS&#xff09;管理文件系统 VFS为所有的文件系统提供了统一的接口&#xff0c…

算法沉淀——动态规划篇(子数组系列问题(上))

算法沉淀——动态规划篇&#xff08;子数组系列问题&#xff08;上&#xff09;&#xff09; 前言一、最大子数组和二、环形子数组的最大和三、乘积最大子数组四、乘积为正数的最长子数组长度 前言 几乎所有的动态规划问题大致可分为以下5个步骤&#xff0c;后续所有问题分析都…

Available platform plugins are: linuxfb, minimal, offscreen, vnc.

说明&#xff1a; buildroots根文件中已经移植好了QT的库&#xff0c;但是运行QT交叉编译之后的可执行文件报错&#xff1a; qt.qpa.plugin: Could not find the Qt platform plugin "eglfs" in "" This application failed to start because no Qt platf…

P4995 跳跳!(贪心)

多么痛的领悟&#xff01;大数据要开long long&#xff01;&#xff01;&#xff01;简单longlong就AC&#xff01; 代码1&#xff1a; #include<algorithm> #include<iostream> #include<cstring> #include<queue> #include<cmath> using name…

哪种排序算法在不同情况下性能最好?

哪种排序算法在不同情况下性能最好&#xff1f;&#x1f50d;&#x1f4ca; 哪种排序算法在不同情况下性能最好&#xff1f;&#x1f50d;&#x1f4ca;&#x1f4dd; 摘要&#x1f680; 引言&#x1f4cb; 正文内容&#xff08;详细介绍&#xff09;冒泡排序快速排序&#x1f…

基于ssm旅游资源网站(java项目+文档+源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的旅游资源网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 旅游资源网站的主要使用者分为管理…

RK3588平台开发系列讲解(I2C开发篇)

目录 前言 I2C 流程 Trasmint only mode(I2C_CON[1:0]2’b00) Mix mode (I2C_CON[1:0]2’b01 or I2C_CON[1:0]2’b11) Receive only mode (I2C_CON[1:0]2’b10) I2C 驱动参数配置 I2C 使用 1 Kernel space 2User space GPIO 模拟 I2C I2C 常见问题 前言 ROCKCHIP 系…

四、戴尔R630本地服务器Linux Centos7.9系统安装docker-ce-20.10.10-3.el7版本

如需查阅上一步骤,请点击下面链接:3、Linux Centos7.9系统的iDRAC远程管理、网络设置、SecureCRT远程登录终端、企业级静态ip地址配置-CSDN博客文章浏览阅读898次,点赞17次,收藏15次。iDRAC连接登录服务器远程管理。https://blog.csdn.net/weixin_67440240/article/details…

【Anaconda】Linux下Anaconda安装和虚拟环境配置

Linux下Anaconda安装和虚拟环境配置 一、安装anaconda二、conda虚拟环境管理三、jupyter相关启动部署四、遇到问题 下面介绍整体流程&#xff0c;遇到问题优先看“遇到问题章节”&#xff01; 一、安装anaconda 1.下载anaconda安装包 &#xff08;1&#xff09;可以选择在官网…

linux i2c-tools使用总结

1,安装iic-tools sudo apt install i2c-tools -y 2,查看有几条iic总线 [root@sino-platform:/root]# ls /dev/i2c- i2c-0 i2c-1 i2c-2 i2c-3 3,查看i2c命令 [root@sino-platform:/root]# i2c i2cdetect i2cdump i2cget i2cset 4,iic-help命令 [root@sino-platform…

postcss安装和使用(详细)

1,安装postcss&#xff1a; 在此之前需要安装有node.js 第一步 命令&#xff1a;cnpm install postcss-cli -g 第二步 命令&#xff1a;cnpm install postcss –g 推荐内容 2,下载autoprefixer插件&#xff0c;并创建postcss.config.js文件并写入配置代码 autoprefixer插件…

信息素养和社会责任

1.信息素养&#xff1a; 信息素养是一种了解、收集、评估、和利用信息的知识结构能力。 信息素养的四个要素&#xff1a;信息意识&#xff0c;信息知识&#xff0c;信息能力&#xff0c;信息道德 信息意识是先导&#xff08;前提&#xff09;&#xff0c;是对关键信息具有持…

大学教材《C语言程序设计》(浙大版)课后习题解析 | 第七、八章

概述 本文主要提供《C语言程序设计》(浙大版) 第七、八章的课后习题解析&#xff0c;以方便同学们完成题目后作为参考对照。后续将更新第九、十章节的课后习题解析&#xff0c;如想了解更多&#xff0c;请持续关注该专栏。 专栏直达链接&#xff1a;《C语言程序设计》(浙大版)…

【OceanBase实战之路】第3篇:多租户架构实现资源隔离

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 一、什么是OceanBase的多租户二、兼容模式2.1 MySQL 模式2.2 Oracle 模式三、租户介绍3.1 系统租户3.2 用户租户3.3 Meta 租…

STLExporter 是用于将 Three.js 场景中的几何体数据导出为 STL 格式的类。

demo案例 STLExporter 是用于将 Three.js 场景中的几何体数据导出为 STL 格式的类。下面是关于 STLExporter 的入参、出参、方法和属性的讲解&#xff1a; 入参 (Parameters): scene: THREE.Scene 类型的参数&#xff0c;表示要导出为 STL 格式的 Three.js 场景对象。 出参…

Python API(happybase)操作Hbase案例

一、Windows下安装Python库&#xff1a;happybase pip install happybase -i https://pypi.tuna.tsinghua.edu.cn/simple 二、 开启HBase的Thrift服务 想要使用Python API连接HBase&#xff0c;需要开启HBase的Thrift服务。所以&#xff0c;在Linux服务器上&#xff0c;执行如…

2024/3/31 蜂鸣器(1)

蜂鸣器分为有源蜂鸣器和无源蜂鸣器。有源内部自带振荡源&#xff0c;接上直流电压即可发声。无源则需要控制器提供振荡脉冲才可发声&#xff0c;调整提供振荡脉冲频率可以发出不同频率的声音。&#xff08;好想用stm32做个电子琴&#xff09; 驱动方式&#xff08;由于蜂鸣器所…

基于SpringBoot+Vue人口老龄化社区服务与管理平台(源码+部署说明+演示视频+源码介绍+lw)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

企微获客助手到底有哪些价值?

获客助手作为企业微信官方提供的获客工具&#xff0c;在私域布局中确实展现了其强大的引流效率和便利性。这一工具通过简化传统引流过程中的复杂步骤&#xff0c;使得企业能够更高效地吸引和转化潜在客户。此外&#xff0c;获客助手还能实现不同渠道的无缝链接&#xff0c;进一…