1. 握手问题python解法——2024年省赛蓝桥杯真题

news2025/1/27 21:21:36

原题传送门:1.握手问题 - 蓝桥云课

问题描述

小蓝组织了一场算法交流会议,总共有 50人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手 (但这 7人与除这 7 人以外的所有人进行了握手)。请问这些人之间一共进行了多少次握手?

注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

问题解析:

本题刻意提醒:“注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。”,我们在解题时应该特别注意关注这些提示的字眼,其可以在一定程度上减少我们的思维量。

其次,请注意,基本上所有的编程题都是数学问题,我们应当要有将具体问题抽象提炼成其对应的数学问题的能力

遇到问题不要慌(其实我也挺慌的),先来提取题中的各种信息:

1,总共有50人参与;

2,有七位参与者例外,根据题目描述,他们与“除这 7 人以外的所有人进行了握手”(可能这七人之间有些不可告人的神秘过往?)

3,待求为这些人之间一共进行了多少次握手

到这里本题的基本逻辑就理清楚了,我们尝试将其抽象成数学问题:

其实只要你数学逻辑比较到位(bushi),读到这里你应该可以很明确的感受到,这就是数学里的排列组合问题

根据题中描述,50人本应该是两两之间相互握手,如果问题是这五十个人两两之间相互握手,求最后的握手次数,你应该可以很快反应过来一个数学概念:组合数!那本题是C呢还是A呢,如果你不确定,可以摇个骰子试试?

如果此时的你对于CA问题摇摆不定,或者并不太了解组合数的详细计算方法,请点击下方链接前往哔哩哔哩大学老老实实学习完本章的前置知识:(敲黑板!)【排列组合,20分钟从零基础到高考要求!|小姚老师】

同样的,对于这七位特立独行的人,我们可以敏锐的察觉到,对他们的处理将会成为本题的题眼!

即,针对这七个人的处理,我们可以延申出两种本题的解题方向:

1,正常计算的43人握手次数,加上,特立独行的7人与其他人之间的握手次数

2,正常计算的50人握手次数,减去,特立独行的7人之间本应该存在的握手次数

本题将采用第二种解法,至于第一种希望读者可以自行进行尝试,若存在阻碍,请在评论区或者后台留言

代码描述:

目录

原题传送门:1.握手问题 - 蓝桥云课

问题描述


在理清楚本题的基本逻辑之后,我们可以尝试着手写代码:

1,首先实现计算组合数的部分,如果你已经具备了解决本题的基本前置知识,那你应该可以确定,本题的关键是C!那么对于C的计算规则实现起来其实非常简单,代码如下:
 

# 计算组合数 C(n, 2),即从 50 人中任意选择 2 人进行握手
def comb(n):
    """计算组合数 C(n, 2)"""
    return n * (n - 1) // 2

2,计算总的握手次数,我们使用上面提到的第二种计算方法实现:

# 计算总握手次数
def calculate_handshakes(total_people, excluded_people):
    total_handshakes = comb(total_people)  # 总人数之间的握手数
    excluded_handshakes = comb(excluded_people)  # 排除的7人之间的握手数
    return total_handshakes - excluded_handshakes

3,设置传入的参数,调用函数,计算结果:

# 参数设置
total_people = 50
excluded_people = 7

# 计算结果
result = calculate_handshakes(total_people, excluded_people)
print(result)

对上述代码进行汇总,得到完整的代码如下:
 

# 计算组合数 C(n, 2),即从 50 人中任意选择 2 人进行握手
def comb(n):
    """计算组合数 C(n, 2)"""
    return n * (n - 1) // 2

# 计算总握手次数
def calculate_handshakes(total_people, excluded_people):
    total_handshakes = comb(total_people)  # 总人数之间的握手数
    excluded_handshakes = comb(excluded_people)  # 排除的7人之间的握手数
    return total_handshakes - excluded_handshakes

# 参数设置
total_people = 50
excluded_people = 7

# 计算结果
result = calculate_handshakes(total_people, excluded_people)
print(result)

结果提交:

执行上述代码,得到结果为:

写在最后,不管是在平时的练习,或者是平时的项目开发中,我们都应该有“变量作用如其名”,这样不仅方便代码的阅读者,同样也方便自身后期的排查与检验

本题就到这里了,由于服务器今年到期(余家贫,耕植不能自给,续不起了wuwuwuwuwu),所以自己的网站没了,又开始重操旧业来到csdn创作hhhhh,网站以及资源问题已经在着手解决了,往期内容至少还需年后才能继续观看,请多给玉儿一些时间,爱你么么哒

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

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

相关文章

【Uniapp-Vue3】setTabBar设置TabBar和下拉刷新API

一、setTabBar设置 uni.setTabBarItem({ index:"需要修改第几个", text:"修改后的文字内容" }) 二、tabBar的隐藏和显式 // 隐藏tabBar uni.hideTabBar(); // 显示tabBar uni.showTabBar(); 三、为tabBar右上角添加文本 uni.setTabBarBadge({ index:"…

Visual Studio Code修改terminal字体

个人博客地址:Visual Studio Code修改terminal字体 | 一张假钞的真实世界 默认打开中断后字体显示如下: 打开设置,搜索配置项terminal.integrated.fontFamily,修改配置为monospace。修改后效果如下:

使用ArcMap或ArcGIS Pro连接达梦数据库创建空间数据库

一、ArcMap 1、本地windows安装 32 位 DM 数据库客户端 2、覆盖dll 将 32 位 DM 数据的..\dmdbms\bin 目录中的 .dll 文件全部拷贝到 ArcGIS 的 ..\Desktop10.5\bin 目录下,有同名文件直接覆盖掉 3、开启达梦数据库空间扩展支持 使用管理员用户登录数据&#xff…

案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设

浪潮云洲工业互联网有限公司(以下简称为“浪潮云洲”)成立于2018年,定位于工业数字基础设施建设商、具有国际影响力的工业互联网平台运营商、生产性互联网头部服务商。截至目前,浪潮云洲工业互联网平台连续五年入选跨行业跨领域工…

ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件

介绍 .NET 6.0 已经发布,ASP.NET Core 6.0 也已发布。其中有不少变化让很多人感到困惑。例如,“谁动了我的奶酪”,它在哪里Startup.cs?在这篇文章中,我将深入研究这个问题,看看它移动到了哪里以及其他变化。…

iOS 集成ffmpeg

前言 本来打算用flutter去实现一个ffmpeg的项目的,不过仔细分析了一下,我后期需要集成OpenGL ES做视频渲染处理,OpenGL ES的使用目前在flutter上面还不是很成熟,所以最后还是选择用原生来开发 ffmpeg集成到iOS工程 iOS对于ffmp…

基于微信小程序的移动学习平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

WPS计算机二级•幻灯片的基础操作

听说这是目录哦 PPT的正确制作步骤🛣️认识PPT界面布局🏜️PPT基础操作 快捷键🏞️制作PPT时 常用的快捷技巧🏙️快速替换PPT的 文本字体🌃快速替换PPT 指定文本内容🌅能量站😚 PPT的正确制作步…

Arcgis国产化替代:Bigemap Pro正式发布

在数字化时代,数据如同新时代的石油,蕴含着巨大的价值。从商业决策到科研探索,从城市规划到环境监测,海量数据的高效处理、精准分析与直观可视化,已成为各行业突破发展瓶颈、实现转型升级的关键所在。历经十年精心打磨…

GitLab配置免密登录和常用命令

SSH 免密登录 Windows免密登录 删除现有Key 访问目录:C:\Users\Administrator\ .ssh,删除公钥:id_rsa.pub ,私钥:id_rsa 2.生成.ssh 秘钥 运行命令生成.ssh 秘钥目录( ssh-keygen -t rsa -C xxxxxx126.…

警企联动齐发力、共筑反诈“防护墙”

2025年1月10日是第五个中国人民警察节,南通移动联合南通公安反诈中心,深入社区商圈,开展防范电信网络诈骗宣传活动,进一步增强广大人民群众的反诈意识和能力,全力守护好群众的“钱袋子”。 当日,活动现场一大早就呈现出一片忙碌景象,工作人员支起摊位,将各类精心制作的反诈宣传…

新版IDEA创建数据库表

这是老版本的IDEA创建数据库表,下面可以自己勾选Not null(非空),Auto inc(自增长),Unique(唯一标识)和Primary key(主键) 这是新版的IDEA创建数据库表,Not null和Auto inc可以看得到,但Unique和Primary key…

分布式微服务系统简述

distributed microservice 分布式与微服务的定义及关系;分布式微服务架构里的各组件,如:配置中心、服务注册/发现、服务网关、负载均衡器、限流降级、断路器、服务调用、分布式事务等;spring cloud 介绍及实现案例,如…

基于Springboot + vue实现的民俗网

“前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能学习网站” 💖学习知识需费心, 📕整理归纳更费神。 🎉源码免费人人喜…

Arduino大师练成手册 -- 读取DHT11

要在 Arduino 上控制 DHT11 温湿度传感器,你可以按照以下步骤进行: 硬件连接: 将 DHT11 的 VCC 引脚连接到 Arduino 的 5V 引脚。 将 DHT11 的 GND 引脚连接到 Arduino 的 GND 引脚。 将 DHT11 的 DATA 引脚连接到 Arduino 的数字引脚&am…

DataStream API

DataStream API是Flink的核心层API。一个Flink程序,其实就是对DataStream的各种转换。具体来说,代码基本上都由以下几部分构成: 一、执行环境(Execution Environment) Flink程序可以在各种上下文环境中运行&#xff1…

十、VUE中的CSS

一、vue中解决样式不冲突的两种方式 scoped方式 在App.vue中引入Helloworld子组件 在Helloworld子组件中再次引入我们编写Demo子组件 解释: 这种方式是在style上加了个scoped,限制了样式的使用范围。 动态类名方式 二、vue构建打包 npm run build

Flutter_学习记录_导航和其他

Flutter 的导航页面跳转,是通过组件Navigator 和 组件MaterialPageRoute来实现的,Navigator提供了很多个方法,但是目前,我只记录我学习过程中接触到的方法: Navigator.push(), 跳转下一个页面Navigator.pop(), 返回上一…

VsCode安装文档

一、下载 进入VS Code官网:Visual Studio Code - Code Editing. Redefined,点击 DownLoad for Windows下载windows版本 当然也可以点击旁边的箭头,下载Windows版本 或 Mac OS 版本 备注: Stable:稳定版Insiders&#…

docker Ubuntu实战

目录 Ubuntu系统环境说明 一、如何安装docker 二、发布.netcore应用到docker中 三、查看docker信息 四、保存linux服务器的镜像、下载镜像 其他 1.Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while wa…