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

原题传送门: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.mzph.cn/diannao/68077.shtml

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

相关文章

15.7k!DISM++一款快捷的系统优化工具

软件介绍 链接 软件介绍 dism是一款由初雨团队开发的win系统优化工具,可当作是微软系统命令行工具dism的GUI版本。可用作系统垃圾清除、启动项管理、程序卸载、驱动管理、系统优化等 该工具个人感觉最重要的就是系统优化选项,它将一些实用、无用或者没…

idea修改模块名导致程序编译出错

本文简单描述分别用Idea菜单、pom.xml文件管理项目模块module 踩过的坑: 通过idea菜单创建模块,并用idea菜单修改模块名,结构程序编译报错,出错的代码莫名奇妙。双击maven弹窗clean时,还是报错。因为模块是新建的&am…

微服务学习-Nacos 注册中心实战

1. 注册中心的设计思路 1.1. 微服务为什么会用到注册中心? 服务与服务之间调用需要有服务发现功能;例如订单服务调用库存服务,库存服务如果有多个,订单服务到底调用那个库存服务呢(负载均衡器)&#xff0…

vim如何设置自动缩进

:set autoindent 设置自动缩进 :set noautoindent 取消自动缩进 (vim如何使设置自动缩进永久生效:vim如何使相关设置永久生效-CSDN博客)

景联文科技加入AIIA联盟数据标注分委会

2025年1月16日,中国人工智能产业发展联盟(简称AIIA)数据委员会数据标注分委会(以下简称“分委会”)正式成立。景联文科技成为第一批AIIA联盟数据标注分委会委员单位。 数据标注分委会的成立旨在搭建数据标注领域产学研…

ELK环境搭建

文章目录 1.ElasticSearch安装1.安装的版本选择1.SpringBoot版本:2.4.2 找到依赖的spring-data-elasticsearch的版本2.spring-data-elasticsearch版本:4.1.3 找到依赖的elasticsearch版本3.elasticsearch版本:7.9.3 2.安装1.官方文档2.下载压…

Ubuntu20.04 运行 PL-VIO

文章目录 运行后不知为何没有线特征 运行后不知为何没有线特征

C#与AI的共同发展

C#与人工智能(AI)的共同发展反映了编程语言随着技术进步而演变,以适应新的挑战和需要。自2000年微软推出C#以来,这门语言经历了多次迭代,不仅成为了.NET平台的主要编程语言之一,还逐渐成为构建各种类型应用程序的强大工具。随着时…

什么情况该换手机?先看后买不踩坑

现在的智能手机发展的非常快,很多刚出来的1000多元的手机性能已经可以流畅玩游戏、刷视频了,而且基本上也能使用3-5年的时。如果真要把手机用到实在不能用了,可能真的会影响生活体验,还有可能因为电池鼓包等问题发生危险&#xff…

centos操作系统上以service形式运行blackbox_exporter监控网页端口

文章目录 前言一、blackbox_exporter是什么二、使用步骤1.获取二进制文件2.准备部署脚本3.执行命令,进行部署4.prometheus中增加需要监控页面的job信息 三、查看部署结果四、配置到grafana中总结 前言 记录一下centos操作系统上以简单的service形式运行blackbox_ex…

使用github提交Pull Request的完整流程

文章目录 1.Fork仓库2. git clone 仓库在本地3.对项目进行修改开发4.上传项目到远程仓库操作补充1. git add .2. git commit -m "提交信息"3. git pull4. git push总结完整工作流程示例 5.将更新的项目pull Request给原来的仓库主人 当多人进行项目的开发的时候&…

python编写Socket程序

文章目录 编写非阻塞的TCP连接程序编写UDP的socket程序创建连接发送数据 多线程管理udp 编写非阻塞的TCP连接程序 下面代码使用了select模块来管理多个 socket 连接,server_socket.setblocking(0)将服务器 socket 设置为非阻塞模式 ,在接收数据时&#…

PHP礼品兑换系统小程序

🎁 礼品兑换系统:革新企业礼品管理,专属神器来袭! 💻 一款专为追求高效与个性化的现代企业量身打造的礼品兑换系统,它基于强大的ThinkPHP框架与前沿的Uniapp技术栈深度融合,不仅完美适配礼品卡…

mapbox加载geojson,鼠标移入改变颜色,设置样式以及vue中的使用

全国地图json数据下载地址 目录 html加载全部代码 方式一:使用html方式加载geojson 1. 初始化地图 2. 加载geojson数据 设置geojson图层样式,设置type加载数据类型 设置线条 鼠标移入改变颜色,设置图层属性,此处是fill-extru…

Langchain+讯飞星火大模型Spark Max调用

1、安装langchain #安装langchain环境 pip install langchain0.3.3 openai -i https://mirrors.aliyun.com/pypi/simple #灵积模型服务 pip install dashscope -i https://mirrors.aliyun.com/pypi/simple #安装第三方集成,就是各种大语言模型 pip install langchain-comm…

【kong gateway】5分钟快速上手kong gateway

kong gateway的请求响应示意图 安装 下载对应的docker 镜像 可以直接使用docker pull命令拉取,也可以从以下地址下载:kong gateway 3.9.0.0 docker 镜像 https://download.csdn.net/download/zhangshenglu1/90307400, postgres-13.tar http…

高效查找:二分查找算法解析

1.二分查找简介 二分查找算法(Binary Search)是一种高效的查找算法,适用于有序数组或序列。它的基本思想是通过逐步缩小查找范围,将查找区间一分为二,直到找到目标值或确定目标值不存在。 算法原理:在数组…

数据统计–图形报表(day11)

Apache ECharts 介绍 Apache ECharts 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:Apache ECharts 入门案例 Apache Echarts官方…

Docker可视化管理工具Portainer

Portainer简介 Portainer 是一个轻量级的、开源的容器管理工具,提供了一个直观的 Web 用户界面(UI),用于管理 Docker 和 Kubernetes 环境。它简化了容器的部署、监控和管理,特别适合不熟悉命令行操作的用户或团队。 …

C++入门14——set与map的使用

在本专栏的往期文章中,我们已经学习了STL的部分容器,如vector、list、stack、queue等,这些容器统称为序列式容器,因为其底层是线性序列的数据结构,里面存储的是元素本身。而本篇文章我们要来认识一下关联式容器。 &am…