试题 A: 握手问题
本题总分:
5
分
【问题描述】
小蓝组织了一场算法交流会议,总共有
50
人参加了本次会议。在会议上, 大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次)。但有 7
个人,这
7
人彼此之间没有进行握手(但这 7
人与除这
7
人以外的所有人进行了握手)。请问这些人之间一共进行了多 少次握手?注意 A
和
B
握手的同时也意味着
B
和
A
握手了,所以算作是一次握手。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分
#include <iostream>
using namespace std;
int main() {
int total_people = 50;
int no_handshake_people = 7;
int handshake_count = 0;
for (int i = 0; i < no_handshake_people; ++i) {
handshake_count += (total_people - no_handshake_people + 1);
}
cout << handshake_count<< endl;
return 0;
}
试题 B: 小球反弹
本题总分:5 分
【问题描述】
有一长方形,长为 343720 单位长度,宽为 233333 单位长度。在其内部左 上角顶点有一小球(无视其体积),其初速度如图所示且保持运动速率不变,分 解到长宽两个方向上的速率之比为 dx : dy = 15 : 17。小球碰到长方形的边框时 会发生反弹,每次反弹的入射角与反射角相等,因此小球会改变方向且保持速 率不变(如果小球刚好射向角落,则按入射方向原路返回)。从小球出发到其第 一次回到左上角顶点这段时间里,小球运动的路程为多少单位长度?答案四舍 五入保留两位小数。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个小数,在提交答案时只填写这个小数,填写多余的内容将无法得分。
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main() {
double length = 343720;
double width = 233333;
double dx_ratio = 15.0 / 17.0;
double dy_ratio = 17.0 / 15.0;
double dx = sqrt(length * length / (dx_ratio * dx_ratio + 1));
double dy = dx * dy_ratio;
double total_distance = 0;
while (true) {
total_distance += dx;
if (total_distance >= length) {
break;
}
total_distance += dy;
if (total_distance >= width) {
break;
}
}
cout << fixed << setprecision(2) << total_distance << endl;
return 0;
}