个人感觉蓝桥杯管的不是很严,可以提前打好快读模板和对拍代码(C/C++组只能使用Dev-cpp),快读模板和对拍代码放在最后了;也可以自己带点吃的喝饮料(比赛时间是9:00 — 13:00,中午有可能会饿)。最后也是成功拿到了一个广东省一等奖。
A. 握手问题(5分)
问题描述
小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手(但这 7 人与除这 7 人以外的所有人进行了握手)。请问这些人之间一共进行了多少次握手?
注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
思路
当时拿到题目一看感觉像是一道高中的排列组合,用 就行了
B. 小球反弹(5分)
问题描述
有一长方形,长为 343720 单位长度,宽为 233333 单位长度。在其内部左上角顶点有一小球(无视其体积),其初速度如图所示且保持运动速率不变,分解到长宽两个方向上的速率之比为 dx : dy = 15 : 17。小球碰到长方形的边框时会发生反弹,每次反弹的入射角与反射角相等,因此小球会改变方向且保持速率不变(如果小球刚好射向角落,则按入射方向原路返回)。从小球出发到其第一次回到左上角顶点这段时间里,小球运动的路程为多少单位长度?答案四舍五入保留两位小数。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个小数,在提交答案时只填写这个小数,填写多余的内容将无法得分。
思路
当时在考场感觉这道题很麻烦就先跳了,想着最后在回来做,结果最后面时间不够了只能随便蒙一个答案上去(好像没对...)。
C. 好数(10分)
时间限制:1.0s 内存限制:256.0MB
问题描述
一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位…)上的数字是奇数,偶数位(十位、千位、十万位…)上的数字是偶数,我们就称之为“好数”。
给定一个正整数 N,请计算从 1 到 N 一共有多少个好数。
输入格式
一个整数 N
输出格式
一个正数表示答案
样例输入1
24
样例输出1
7
样例输入2
2024
样例输出2
150
样例说明
对于第一个样例,24 以内的好数有 1、3、5、7、9、21、23,一共 7 个。
评测用例规模与约定
对于 10% 的评测用例,1 ≤ N ≤ 100。
对于 100% 的评测用例,1 ≤ N ≤
思路
正确答案应该是要用数位dp,但是暴力也能过。
代码
#include <bits/stdc++.h>
using namespace std;
inline int read() {
int x = 0, f = 1; char c = getchar();
while (c < '0' || c > '9') {
if (c == '-') f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int main() {
int n = read(), cnt = 0;
for (int i = 1; i <= n; i += 2) {
int m = i, t = 0, flag = 1;
while (m) {
if (m % 2 == t) { flag = 0; break; }
m /= 10, t ^= 1;
}
if (flag) cnt++;
}
printf("%d", cnt);
return 0;
}
D. R 格式(10分)
时间限制:1.0s 内存限制:256.0MB
问题描述
小蓝最近在研究一种浮点数的表示方法:R 格式。对于一个大于 0 的浮点数 d,可以用 R 格式的整数来表示。给定一个转换参数 n,将浮点数转换为 R 格式整数的做法是:
1.将浮点数乘以 ;
2.四舍五入到最接近的整数。
输入格式
一行输入一个整数 n 和一个浮点数 d,分别表示转换参数,和待转换的浮点数。
输出格式
输出一行表示答案:d 用 R 格式表示出来的值。
样例输入
2 3.14
样例输出
13
样例说明
,四舍五入后为 13。
评测用例规模与约定
对于 50% 的评测用例:1 ≤ n ≤ 10,1 ≤ 将 d 视为字符串时的长度 ≤ 15。
对于 100% 的评测用例:1 ≤ n ≤ 1000,1 ≤ 将 d 视为字符串时的长度 ≤ 1024;保证 d 是小数,即包含小数点。
思路
因为 ,所以很明显需要用到高精度快速幂(