题解:P10423 [蓝桥杯 2024 省 B] 填空问题

· · 题解

首先考虑朴素的握手问题(50 个人要全部握手),显然握手次数为 \frac{50\times49}{2},思路如下:

思路一:1 个人要和其余 49 个人握手,第 2 个人也要和其他人握手,但由于已经和第 1 个人握手,故只需和 48 个人握手即可,同理第 3 个人要和 47 个人握手,……第 49 个人要和 1 个人握手,第 50 因为已经和所有人都握了手,所以无需再握手。答案为 \displaystyle\sum^{49}_{i=1}i=\displaystyle\frac{50\times49}{2}

思路二: 每个人都要和除了自己外所有人握手,所以 50 个人每个人都握手了 49 次,共 50\times49 次。设两个人 XY 握手,X 会主动向 Y 握一次手,Y 又会主动向 X 握一次手,可以发现每两个人都会握手两次,故答案要除以二。

下面考虑本题,因为有 7 个人他们内部是不握手的,因此有三种思路:

思路一: 假设这 7 个人也互相握手,则答案如上面描述。再考虑他们不握手,则只需减掉这 7 个人握手次数即可,答案为 \displaystyle\frac{50\times49-7\times6}{2}
思路二: 考虑互相握手的 43 人,共握手 \displaystyle\frac{43\times42}{2} 次,再加上这 7 个人分别与另外 43 握手,共握手 7\times 43 次,答案为 \displaystyle\frac{43\times42}{2}+7\times 43
思路三: 编程,使用暴力法枚举所有的握手情况,思路较为简单,代码实现也较短,这里省略掉代码,请读者自行思考。

三种思路的答案均为 1204

小花絮:点击这里查看。

由于反弹比较麻烦,考虑不反弹的情况。将长方形分别向右方和下方翻折,把小球速度正交分解成水平速度和竖直速度。易得水平位移比竖直位移等于 15:17,显然当且仅当水平位移是原长方形长的偶数次倍,竖直位移是原长方形宽的的偶数次倍时取得答案。

可以编程用暴力法求解答案,代码如下:

#include<bits/stdc++.h>
using namespace std;
signed main(){
    for(int i=1;i<=1e4;i++)for(int j=1;j<=1e4;j++){
        const unsigned long long x=343720*i*2,y=233333*j*2;
        if(17*x==15*y){
            cout<<fixed<<setprecision(2)<<sqrt((double)x*x+y*y);
            return 0;
        }
    }
}

算出答案为:1100325199.77