第十五届蓝桥杯 省赛 C/C++ 大学B组

        个人感觉蓝桥杯管的不是很严,可以提前打好快读模板和对拍代码(C/C++组只能使用Dev-cpp),快读模板和对拍代码放在最后了;也可以自己带点吃的喝饮料(比赛时间是9:00 — 13:00,中午有可能会饿)。最后也是成功拿到了一个广东省一等奖。

A. 握手问题(5分)

问题描述

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

答案提交

        这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路

        当时拿到题目一看感觉像是一道高中的排列组合,用 C_{50}^{2} - C_{7}^{2} = 1204 就行了

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 ≤ 10^{7}

思路

        正确答案应该是要用数位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};
        2.四舍五入到最接近的整数。

输入格式

        一行输入一个整数 n 和一个浮点数 d,分别表示转换参数,和待转换的浮点数。

输出格式

        输出一行表示答案:d 用 R 格式表示出来的值。

样例输入

2  3.14

样例输出

13

样例说明

        3.14 \times 2^{2} = 12.56,四舍五入后为 13。

评测用例规模与约定

        对于 50% 的评测用例:1 ≤ n ≤ 10,1 ≤ 将 d 视为字符串时的长度 ≤ 15。
        对于 100% 的评测用例:1 ≤ n ≤ 1000,1 ≤ 将 d 视为字符串时的长度 ≤ 1024;保证 d 是小数,即包含小数点。

思路

        因为 n \leq 1000 ,所以很明显需要用到高精度快速幂(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值