第十五届蓝桥杯软件赛省赛C/C++B 组题解

试题 A: 握手问题

本题总分: 5 5 5

思路:组合计数,用为 50 50 50 个人握手的总方案数 C 50 2 C^{2}_{50} C502 ,减去七个人彼此没有握手的方案数 C 7 2 C^{2}_{7} C72 即为答案。

握手问题
#include <bits/stdc++.h>
#define int long long
#define db long double
#define all(f) f.begin(), f.end()
#define rall(f) f.rbegin(), f.rend()
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define mod 1000000007
#define MOD 998244353
#define x first
#define y second

using namespace std;

const int N = 2e5 + 10, M = 1010, S = 25;
typedef pair<int, int> pii;
const db eps = 1e-8;
const db pi = acos(-1);

int f[N], n, m;

inline void solve() {
   
    int ans = 50 * 49 / 2 - 7 * 6 / 2;
    cout << ans << '\n';
    //1204
}

signed main() {
   
    ios::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int _ = 1;
    cout << fixed << setprecision(8);
    // cin >> _;
    while(_ --) {
   
        solve();
    } return _ ^ _;
}

答案: 1204 1204 1204

试题 B: 小球反弹

本题总分: 5 5 5

思路:由题意,小球返回原点时,在长和宽两个方向所经历的路程均为长方形的长和宽的偶数倍,推公式 (拒绝玄学,开始推公式),设小球返回原点经历的 x , y x,y xy 分量的路程分别为 S x , S y S_x,S_y SxSy ,速度分别为 d x , d y d_x,d_y dxdy ,每次返回原点经历 k x k_x kx 个矩形长, k y k_y ky 个矩形宽,所用时间为 t t t ,有:

{ S x = 2 k x ∗ x = t ∗ d x S y = 2 k y ∗ y = t ∗ d y ⇒ k x k y = d x ∗ x d y ∗ y \begin{cases}S_x=2k_x*x=t*d_x\\S_y=2k_y*y=t*d_y\end{cases}\Rightarrow\frac{k_x}{k_y}=\frac{d_x*x}{d_y*y} { Sx=2kxx=tdxSy=2kyy=tdykykx=dyydxx

得到的 k x 、 k y k_x、k_y kxky 为小球每次返回原点时经历的矩形的长和宽的偶数倍,小球第一次返回原点所经历的矩形长和宽倍数为:

{ k x 1 = k x g c d ( k x , k y ) k y 1 = k y g c d ( k x , k y ) \begin{cases} k_{x_1}=\frac{k_x}{gcd(k_x,k_y)}\\ k_{y_1}=\frac{k_y}{gcd(k_x,k_y)} \quad \end{cases} { kx1=gcd(kx,ky)kxky1=gcd(kx,ky)ky

于是有小球每次返回原点,经历两分量的路程及时间:
{ x n = k x 1 ∗ x ∗ n y n = k y 1 ∗ y ∗ m ( n = 0 , 1 , 2 , 3 , 4... ) \begin{cases}x_n=k_{x_1}*x*n\\y_n=k_{y_1}*y*m\quad\end{cases}(n=0,1,2,3,4...) { xn=kx1xnyn

### 第十五届蓝桥杯C++ A信息 #### 比题目获取 为了获得第十五届蓝桥杯C++ A的具体题目,建议访问官方发布的资源库。对于研究生而言,可以参考已有的公开资源文件来推测可能的题型和难度水平[^1]。 #### 参规则概述 通常情况下,蓝桥杯有着严格的参规定,包括但不限于身份验证、考试纪律以及编程环境的要求。具体到A,虽然没有直接提及A的信息,但从其他别的描述中可以看出一些共通之处。例如,确保熟悉考场设备是非常重要的;有参者提到使用的键盘状况不佳影响发挥,因此提前适应场地条件有助于减少不必要的干扰[^3]。 #### 准备资料推荐 针对准备阶段,可以从多个方面入手收集学习材料: - **历年真题解析**:通过研究往年的试题及其解答方案加深理解。 - **算法训练平台**:利用在线OJ(Online Judge)系统强化实践能力。 - **技术文档与书籍**:查阅权威的技术手册或指南书目补充理论基础。 此外,还可以借鉴他人的备考经验和心得笔记作为辅助参考资料。一位参与者分享了其关于C++大学C的心得体会,并提供了个人整理的部分题解思路供后来者参考[^2]。 ```cpp // 示例代码片段用于展示如何高效地解决某一类常见问题 #include <iostream> using namespace std; int main() { int n; cin >> n; // 输入数据量大小n vector<int> data(n); for (auto &item : data){ cin >> item; // 接收输入序列 } sort(data.begin(), data.end()); // 对数进行排序操作 cout << "Sorted array is:" << endl; for(auto num:data){ cout<<num<<" "; // 输出处理后的结果 } return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值