第十五届蓝桥杯C/C++学B组(解)

ops/2024/10/18 16:48:09/

1.握手问题

解题思路一

数学方法

50个人互相握手 (49+1)*49/2   ,减去7个人没有互相握手(6+1)*6/2

答案:1024

解题思路二
java">package 十五届;public class Min {public static void main(String[] args) {int ans = 0;for (int i = 1; i <= 50; i++) {for (int j = i+1; j <= 50; j++) {//排除掉7人的情况if(!(i>=1&&i<=7 && j>=1&&j<=7)){ans++;}}}System.out.println(ans);}
}

 2.小球反弹

解题思路:

针对前进的方向进行分解为x,y方向,去求解运动返回到左上角的时间,有了时间,即可利用时间来计算总路程,假设 x方向走了p个来回,y方向走了q个来回,经过了时间t,小球第一次回到原点

则时间*速率=路程  t*dx = 2px ,t*dy = 2qy,令一式/二式,得p/q= y/x*dx/dy = y*dx/x*dy ,利用gcd(求两个数的最大公约数)对分式p,q进行约分,进而得到约分后的p,q 则利用时间t=2px/dx,总路程 = t*(sqrt(15^2+17^2))

java">package 十五届;import static java.lang.Math.sqrt;public class 小球反弹 {public static void main(String[] args) {int x = 343720;int y = 233333;int dx = 15;int dy = 17;int p = y * dx;int q = x * dy;int g = gcd(p, q);p /= g;q /= g;int t = 2 * p * x / dx;double ans = t * sqrt(15 * 15 + 17 * 17);//d答案输出两位小数System.out.printf("%.2f", ans);}public static int gcd(int a, int b) {return b == 0 ? a : gcd(b, a % b);}
}

答案:1100325199.77

3.好数

解题思路

 首先排除掉末位数,可以优化复杂度,满足条件后 在进一步检查偶数位是否为偶数,奇数位是否为奇数

java">package 十五届;import java.util.Scanner;public class 好数 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int ans = 0;for (int i = 1; i <= n; i++) {//局部优化:过滤数值结尾不符合条件的情况if (i % 10 % 2 == 0) continue;if (check(i)) ans++;//判断是否为好数}System.out.println(ans);}//检查x是否为好数public static boolean check(int x) {int cnt = 1; //记录位数while (x > 0) {int b = x % 10;if (cnt % 2 == 1) {//是奇数位并且不是奇数if (b % 2 != 1) return false;} else if (b % 2 != 0) {//是偶数位并且不是偶数return false;}cnt++;x /= 10;}return true;}
}

4.R格式

解题思路:

本题考察利用数组模拟高精度,

java">package 十五届;import java.util.Scanner;public class 高精度 {public static void main(String[] args) {int[] a = new int[(int) (2e3 + 10)];String s = "";int n = 0;Scanner scanner = new Scanner(System.in);s = scanner.nextLine();n = scanner.nextInt();StringBuffer stringBuffer = new StringBuffer(s);stringBuffer.reverse();//反转字符串int pos = s.indexOf('.');stringBuffer.delete(pos, pos + 1);//把小数点删除,方便后续计算int len = s.length();for (int i = 0; i < len; i++) {a[i + 1] = stringBuffer.charAt(i) - '0';}//高精度*低精度模板for (int i = 1; i <= n; i++) {//顺序扫描每一位,均*2for (int j = 1; j <= len; j++) {a[j] = a[j] * 2;}//再次扫描。处理进位和最高位for (int j = 1; j <= len; j++) {if (a[j] >= 10) {a[j + 1]++;a[j] %= 10;if (j == len) len++;}}}//处理小数点后的第一位,进行四舍五入if (a[pos] >= 5) {a[pos + 1]++;}//倒序打印for (int i = len; i >= pos+1; i--) {System.out.print(a[i]);}}}

第四题:宝石组合

题解·

 

#include <iostream>
#include <algorithm>
#include <vector>using namespace std;int a[100100], b[100100];
vector<int> vec[100100];
int n;int main() {ios::sync_with_stdio(false);cout.tie(nullptr);cin >> n;int max_a = 0;for (int i = 1; i <= n; i++) {cin >> a[i];b[a[i]]++;max_a = max(max_a, a[i]);}sort(a + 1, a + 1 + n);for (int i = 2; i <= max_a; i++) {for (int j = i; j <= max_a; j += i) {for (int k = 1; k <= b[j]; k++) {if (vec[i].size() >= 3) break;vec[i].push_back(j);}}}for (int i = max_a; i >= 2; i--) {if (vec[i].size() >= 3) {cout << vec[i][0] << " " << vec[i][1] << " " << vec[i][2] << endl;return 0;}}cout << a[1] << " " << a[2] << " " << a[3] << endl;return 0;
}

 


http://www.ppmy.cn/ops/124763.html

相关文章

【GaussDB】产品简介

产品定位 GaussDB 200是一款具备分析及混合负载能力的分布式数据库&#xff0c;支持x86和Kunpeng硬件架构&#xff0c;支持行存储与列存储&#xff0c;提供PB(Petabyte)级数据分析能力、多模分析能力和实时处理能力&#xff0c;用于数据仓库、数据集市、实时分析、实时决策和混…

FFmpeg的简单使用【Windows】--- 简单的视频混合拼接

实现功能 点击【选择文件】按钮在弹出的对话框中选择多个视频&#xff0c;这些视频就是一会将要混剪的视频素材&#xff0c;点击【开始处理】按钮之后就会开始对视频进行处理&#xff0c;处理完毕之后会将处理后的文件路径返回&#xff0c;并在页面展示处理后的视频。 视频所…

《机器学习与数据挖掘综合实践》实训课程教学解决方案

一、引言 随着信息技术的飞速发展&#xff0c;人工智能已成为推动社会进步的重要力量。作为人工智能的核心技术之一&#xff0c;机器学习与数据挖掘在各行各业的应用日益广泛。本方案旨在通过系统的理论教学、丰富的实践案例和先进的实训平台&#xff0c;帮助学生掌握机器学习…

ChatGPT国内中文版镜像网站整理合集(2024/10/06)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…

【MySQL_JDBC】Day23-Day28 数据库基础、JDBC基础、聊天室3.0

数据库 数据库基本概念 数据库DataBase 定义: 保存数据的仓库就称为数据库 例如 编写一个用户管理系统&#xff0c;可以让用户在我们编写的系统上进行注册等操作&#xff0c;此时就涉及到了保存用户数据的操作&#xff0c;目前我们的做法可以将一个用户信息以一个User对象…

【Webpack】Webpack 中 jsonp 的使用

Webpack 在处理模块加载时会使用 JSONP&#xff08;JSON with Padding&#xff09;技术&#xff0c;特别是在动态加载&#xff08;异步加载&#xff09;模块的场景中。 JSONP 在 Webpack 中的作用 Webpack 使用 JSONP 来实现代码拆分和按需加载。这种技术使得浏览器可以通过插…

【设计模式】装饰者模式

装饰者模式 角色和buff进行解释 步骤 角色和Buff共有一个Component&#xff0c;理解为有同一个操作&#xff0c;给予Buff里面可以填充角色。角色有一个基类&#xff0c;Buff有一个基类&#xff0c;因为有多种Buff 理解 不是常规理解上的给角色填装Buff&#xff0c;角色作为…

云原生后端

云原生后端 云原生后端是当今软件开发领域的一个重要概念&#xff0c;它代表了将软件应用程序容器化部署在云环境中&#xff0c;并采用微服务架构进行开发和管理的一种趋势。这种趋势的兴起&#xff0c;得益于云计算和微服务架构的快速发展&#xff0c;以及企业对高效、灵活、…