蓝桥杯省赛真题C++B组2024-握手问题

devtools/2025/3/14 16:09:20/

一、题目

【问题描述】

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

二、思路

方法一:

        对于这种题,我一般是来找规律,我们从最简单的开始,有2个人的话,我们需要握手1次,3个人我们需要握手3次,四个人需要握手6次,5个人需要握手10次,6个人需要15次

人数握手次数
21
33=2+1
46=3+2+1
510=4+3+2+1
615=5+4+3+2+1

        我们不难找到一些规律,握手次数是  人数-1 开始向下逐个相加到1,3个人就是3-1向下开始相加(2+1)

        但是题中说7个人是不相互握手的,我们假设3个人不握手,看上面的表,3个人将不握手3次(2+1),7个人将不握手6+5+4+3+2+1=21次

        50个人握手49+48+47+...+2+1=1225次

        又7个人不握手,1225-7=1204次

方法二:(代码)

三、代码

#include<iostream>
using namespace std;
int main(){
//	总握手次数计算:如果没有任何限制,50人两两握手的次数为组合数C(50, 2)。
//排除7人之间的握手次数:这7人之间没有握手,因此需要从总次数中减去C(7, 2)。int  total = 50;int subtract = 7;int  total_hands = total * (total - 1)/2;int subtract_hands = subtract * (subtract - 1)/2;cout<< total_hands-subtract_hands << endl;return 0;
} 

四、反思

组合

  • 每次握手是 无序的(A 和 B 握手与 B 和 A 握手是同一件事)。

  • 组合数 C(n,2) 正是用来计算 无序且不重复的两两配对 的数量,

排列数 A(n, m) 与组合数 C(n, m) 的求法_排列组合-CSDN博客


http://www.ppmy.cn/devtools/167062.html

相关文章

Fiora聊天系统本地化部署:Docker搭建与远程在线聊天的实践指南

文章目录 前言1.关于Fiora2.安装Docker3.本地部署Fiora4.使用Fiora5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 这个通讯软件泛滥的时代&#xff0c;每天都在刷着同样的朋友圈、看着千篇一律的表情包&#xff0c;是不是觉得有点腻了&#…

QT系列教程(18) MVC结构之QItemSelectionModel模型介绍

视频教程 https://www.bilibili.com/video/BV1FP4y1z75U/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 QItemSelectionModel Qt的MVC结构支持多个View共享同一个model&#xff0c;包括该model的选中状态等。我们可以通过设置QItemSelectionModel&#xff0c;来更改View的选…

双指针算法介绍+算法练习(2025)

一、介绍双指针算法 双指针&#xff08;或称为双索引&#xff09;算法是一种高效的算法技巧&#xff0c;常用于处理数组或链表等线性数据结构。它通过使用两个指针来遍历数据&#xff0c;从而减少时间复杂度&#xff0c;避免使用嵌套循环。双指针算法在解决诸如查找、排序、去重…

详细解析 ListView_GetEditControl()

书籍&#xff1a;《Visual C 2017从入门到精通》的2.3.8 Win32控件编程 环境&#xff1a;visual studio 2022 内容&#xff1a;【例2.28】支持主项可编辑的列表视图控件 说明&#xff1a;以下内容大部分来自腾讯元宝。 ​函数原型 HWND ListView_GetEditControl(HWND hwndL…

不同材质的亚克力材质如何选择?

亚克力的材质根据不同的生产流程、加工&#xff0c;实现不同的效果。 材质的选择是根据设备的使用场景、用户需求、设计效果和功能要求来决定的。 立创面板共提供6种的亚克力&#xff08;PMMA&#xff09;类型可供选择。下面&#xff0c;我们一同看看不同亚克力材质间的区别吧…

用SpringBoot做一个web小案例实现登录

我们在login.html页面输入用户名和密码点击登录&#xff0c;请求访问到/login&#xff0c;然后在login方法里获取User对象&#xff0c;在到UserService的login方法中判断登录&#xff0c;来依照这个逻辑&#xff0c;来完成剩下的功能&#xff1a; <div style"color:re…

基于单片机的智能电表设计(论文+源码)

1 系统整体方案设计 本课题为基于单片机的电子式单项智能电表&#xff0c;在此设计如图2.1所示的系统总体架构&#xff0c;其采用STM32单片机作为主控制器&#xff0c;搭配外设HLW8032模块实现对电压&#xff0c;电流&#xff0c;功率因数&#xff0c;电能消耗等参数进行检测&…

Linux笔记之通配符和正则表达式的区别

Linux笔记之通配符和正则表达式的区别 code review! 参考笔记 1.Linux笔记之通配符和正则表达式的区别 2.C++笔记之C语言中的换行符和转义符 文章目录 Linux笔记之通配符和正则表达式的区别1.通配符概念2.通配符和正则表达式的区别3.C++或C语言中有没有通配符?4.Linux Bash脚…