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

news2025/2/23 11:04:59

目录

1.字符串排序

2.门牌制作

3.即约分数

4.蛇型填数

5.跑步锻炼

6.七段码

7.成绩统计

8.回文日期

9.字串分值和

10.平面切分


1.字符串排序

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

2.门牌制作

题目解析:出过超级多这类题目,就是每位检查有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.跑步锻炼

题目解析:日期类问题。注意一下逻辑关系,首先要先加和再判断是否是再2020/10/1日期之内.要不然会少加.

#include <iostream>
using namespace std;

int main()
{
    int year = 2000, month = 1, day = 1, weekday = 6;
    int sum = 0;
    int getmonthday[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    while(1)
    {
        if(weekday == 1 || day == 1)
        {
        	sum += 2;
		}
		else if(weekday == 1 && day == 1)
		{
			sum += 2;
		}
		else
		{
			sum += 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 > getmonthday[month] + 1)
          {
             day = 1;
             month++;
          }
     }
     else
     {
	   if(day > getmonthday[month])
       {
     	  day = 1;
          month++;
	   }
	 } 

      if(month == 13)
      {
         month = 1;
         year++;
      }
    }
    cout << sum << endl;
    return 0;
}

6.七段码

 题目解析:将相邻的边全部放到矩阵当中,采用dfs深搜,如果矩阵为1就是代表可以选择,算出最后这些可以选择的矩阵元素有多少种方案数.将每种每一层进行遍历,方法进行记录并且加和。由于矩阵的每个元素都使用过两次那么总次数是要/2.

#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;

那么就是相同的字符就会影响贡献点。

就拿ababc举例子;下面写出子串;

可以分析出来出现第二次的总和是等于第二次出现次数减去第一次出现的次数.再将全部的加和.那么如何求出每次出现的和;可以分为首次出现和多次出现.

首次出现: sum += (下标+1) * (字符长度 - 下标);

多次出现: sum += 本次出现-上一次出现的个数.  将上次出现的存放到一个数组中

 = (下标 + 1 - 上次数组) * (字符长度 - 下标).

#include <iostream>
#include<string>
using namespace std;

long long num[26] = {0};

int main()
{
   string s;
   cin >> s;
   
   long long len = s.size();
   long long  sum = 0;

   for(long long  i = 0; i < len; i++)
   {
       if(num[s[i] - 'a'] == 0)//没有被使用过
       {
          sum += (i + 1) * (len - i);
          num[s[i] - 'a'] = i + 1;
       }
       else//使用过
       {
          sum += (i + 1 - num[s[i] - 'a']) * (len - i);
       }
   }
   
   cout << sum << endl;
   return 0;
}

10.平面切分

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

#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
 
int main()
{
	int n;
	scanf("%d", &n);
	int a, b;
	long double A[N], B[N];
	pair<long double, long double> p; 
	set<pair<long double, long double> > s;  //利用set自动去重功能筛选掉重边 
	for(int i = 0; i < n; i++)
	{
		scanf("%d %d", &a, &b);
		p.first = a;
		p.second = b;
		s.insert(p);
	}
	int i = 0;  //将去重后的直线数据放回A,B数组 
	for(set<pair<long double, long double> >::iterator it = s.begin(); it != s.end(); it++, i++)
	{
		A[i] = it -> first;
		B[i] = it -> second;
	}
	long long ans = 2;  //初始情况当只有一条直线时,有两个平面 
	for(int i = 1; i < s.size(); i++)  //从下标1开始,也就是第二条直线 
	{
		set<pair<long double, long double> > pos;  //记录第i条直线与先前的交点 
		for(int j = i-1; j >= 0; j--)
		{
			int a1 = A[i], b1 = B[i];
			int a2 = A[j], b2 = B[j];
			if(a1 == a2)  //遇到平行线无交点,跳出 
				continue; 
			p.first = 1.0*(b2-b1)/(a1-a2);
			p.second = 1.0*a1*((b2-b1)/(a1-a2)) + b1;
			pos.insert(p); 
		}
		ans += pos.size() + 1;  //根据结论,每增加一条直线,对平面数的贡献值是其与先前直线的交点数(不重合)+1 
	} 
	printf("%d\n", ans);
	return 0;
}

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

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

相关文章

Java springboot+vue宠物爱心组织管理系统附赠万字文档

项目演示视频: &#xff08;有文档&#xff09;Java springboot宠物爱心组织管理系统 项目介绍: &#xff08;有文档&#xff09;Java springboot宠物爱心组织管理系统 技术&#xff1a; 基于springboot Vue 的宠物爱心组织管理系统&#xff08;宠物爱心组织管理系统&#xf…

12-pyspark的RDD算子注意事项总结

目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第…

【记录】Prompt模板|作为甲方怎么清晰专业地描述自己的需求(又名“乙方,给你的甲方扔个GPT解放自己吧”)

这篇Prompt摘抄并修改自朋友送给我的书的第49页5.2.3让ChatGPT构建提示&#xff0c;质量挺不错&#xff0c;支持一下她的博客&#xff1a;【好书推荐2】AI提示工程实战&#xff1a;从零开始利用提示工程学习应用大语言模型。 书长这样&#xff1a; 不啰嗦了&#xff0c;正文如…

代码解读:使用Stable Diffusion完成相似图像生成任务

Diffusion models代码解读&#xff1a;入门与实战 前言&#xff1a;作为内容生产重要的一部分&#xff0c;生成相似图像是一项有意义的工作&#xff0c;例如很多内容创作分享平台单纯依赖用户贡献的图片已经不够了&#xff0c;最省力的方法就是利用已有的图片生成相似的图片作为…

vscode 之 win11前端环境安装(javascrip、html、nodejs以及插件推荐)

javascript 也可以用来编写一些小工具&#xff0c;包括但不限于浏览器的插件&#xff0c;浏览器的书签以及进行一些其他操作的小工具等。 这时候就需要进行安装前端相关的测试环境 1. nodejs &#xff08;1&#xff09;确保电脑存在 nodejs 的环境 在 cmd 输入 npm -v node -…

DataEase-V1.18版本源码通过Docker镜像部署与静态资源通过阿里云OSS存储实现看这一篇就够了

修改DataEase实现静态资源阿里云OSS存储 后端源码文件读取配置类配置 1.阿里云OSS配置类 /*** ClassName AliyunConfig.java* author shuyixiao* version 1.0.0* Description 阿里云OSS配置* createTime 2024年04月03日 10:03:00*/ Data Configuration public class AliyunC…

Docker端口一直占用问题,docker重置(端口无法释放)(彻底重置docker环境)

文章目录 背景解决方法&#xff1a;彻底重置docker环境1. 停止所有Docker容器2. 删除所有容器3. 删除所有Docker镜像4. 删除所有Docker网络5. 删除所有Docker卷6. 清理Dangling资源7. 停止Docker服务8. 删除Docker数据和配置文件9. 重启Docker服务10. 验证 在这里插入图片描述验…

PostgreSQL入门到实战-第十四弹

PostgreSQL入门到实战 PostgreSQL数据过滤(七)官网地址PostgreSQL概述PostgreSQL中BETWEEN 命令理论PostgreSQL中BETWEEN 命令实战更新计划 PostgreSQL数据过滤(七) BETWEEN运算符允许您检查值是否在值的范围内。 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容…

“桃花庵主”是我国哪位古代名人的称号?2024年4月12日蚂蚁庄园今日答案

原文来源&#xff1a;蚂蚁庄园今日答案 - 词令 蚂蚁庄园是一款爱心公益游戏&#xff0c;用户可以通过喂养小鸡&#xff0c;产生鸡蛋&#xff0c;并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料&#xff0c;使用鸡饲料喂鸡之后&#xff0c;会可以获得鸡蛋&…

2024年腾讯云新用户云服务器价格表

腾讯云作为国内领先的云服务提供商&#xff0c;以其稳定可靠、灵活高效的服务赢得了广大用户的信赖。对于新用户而言&#xff0c;腾讯云提供了丰富的云服务器产品&#xff0c;并且制定了具有竞争力的价格策略&#xff0c;以吸引更多的新用户加入。 首先&#xff0c;我们来看一下…

【C++】STL--stackquene

这一节主要学习stack、quene和priority_quene的使用以及模拟实现&#xff0c;最后介绍了容器适配器。 目录 stack的介绍和使用 stack的介绍 stack的使用 stack的模拟实现 queue的介绍和使用 queue的介绍 queue的使用 queue的模拟实现 priority_queue的介绍和使用 pri…

Spring Boot与Vue联手打造智能化学生选课平台

末尾获取源码作者介绍&#xff1a;大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与…

嵌入式工程师需要掌握哪些技术?

嵌入式系统是当今科技领域中的重要组成部分&#xff0c;它们存在于我们生活的方方面面&#xff0c;从智能手机到汽车控制系统&#xff0c;从家电到医疗设备。因此&#xff0c;对于那些想要进入嵌入式行业的人来说&#xff0c;掌握一些必要的技术能力是至关重要的。在本篇中&…

springboot 反射调用ServiceImpl时报错:java.lang.NullPointerExceptio、,mapper为null【解决方法】

springboot 反射调用ServiceImpl时报错&#xff1a;java.lang.NullPointerException、mapper为null【解决方法】 问题描述问题分析解决方案创建SpringBootBeanUtil编写调用方法 executeMethod调用 总结 问题描述 在使用Spring Boot时&#xff0c;我们希望能够通过反射动态调用…

Win11又来「重大」更新!

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站ai人工智能工具 更多资源欢迎关注 Windows 11预览通道的22635.3420版本迎来了几个比较大的改进&#xff0c;主要有三个方面&#xff1a; …

Springboot 大事务问题的常用优化方案

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1.前言 2.什么是大事务 3.解决办法 3.1.少用Transactional注解 3.2..将查询…

医疗图像分割 | 基于Pyramid-Vision-Transformer算法实现医疗息肉分割

项目应用场景 面向医疗图像息肉分割场景&#xff0c;项目采用 Pytorch Pyramid-Vision-Transformer 深度学习算法来实现。 项目效果 项目细节 > 具体参见项目 README.md (1) 模型架构 (2) 项目依赖&#xff0c;包括 python 3.8、pytorch 1.7.1、torchvision 0.8.2(3) 下载…

【实战】ZLMediaKit问题解决

项目中遇到的问题 1.不带音频的rtsp转rtmp后,出现了音频 1.1判断元素rtsp是否有音频的方法 使用vlc进行访问rtsp流,看如图位置: 音频 -> 音轨 ,是否为灰色,为灰色就是不带音频 1.2 解决方法 在zlmediakit的web页面进行全局配置修改如图, 1.将3和4处修改为 否,再保存, …

网络协议——RSTP(快速生成树)与MSTP(多实例生成树)

一. RSTP 1. STP的不足 1、依靠计时器超时的方式进行收敛导致它的收敛时间需要30到50秒 2、端口状态和端口角色没有细致区分&#xff0c;指导数据转发依靠的不是端口状态而是端口所扮演角色。 3、如果拓扑频繁变化导致用户通信质量差&#xff0c;甚至通信中断&#xf…

MyBatis中的动态SQL的用法

前言&#xff1a;我们要想在Spring Boot环境下使用动态SQL&#xff0c;必须先在application.yml中添加配置 mybatis:mapper-locations: classpath:mapper/**Mapper.xml 并且新建一个xml文件&#xff0c;路径及写法按照配置好的形式写 在新建好的xml文件中复制进去以下代码&a…