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

server/2024/10/17 19:05:34/

1.握手问题

解题思路一

数学方法

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

答案:1024

解题思路二

思路:
模拟

        将50个人从1到50标号,对于每两个人之间只握一次手,我们可以将问题转化为每个人只主动和标号比他大的人握一次手,那么标号为 1 的人,需要主动握 49 次,标号为 2 的人,需要主动握 48 次,以此类推,标号为 i 的人需要主动握 50 - i 次。(这边强烈建议 I 人往后排)

        经过上述流程,我们即可得到不加限制条件下的总握手次数为 1 + 2 + ... + 48 + 49 = 1225

        接下来我们来处理限制条件,我们假设相互之间没有握手的这七个人为标号 1 ~ 7 的七个人,那么如果他们之间有相互握手的话,根据前述流程可得他们之间握手次数为 1 + 2 + ... + 6  = 21

        用总次数减去多余握手次数(前七个人间相互握手次数)即得到限制条件下的握手次数,即为 1204

可用代码实现求和、求差过程

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]);}}}

第四题:宝石组合

题解:

1.先对宝石的 “闪亮度” 进行排序,从小到大排列。

2.枚举所有可能的三种宝石组合,可以采用三重循环来实现,其中第一个循环选择第一种宝石,第二个循环选择第二种宝石,第三个循环选择第三种宝石。

3.对于每种组合,计算它们的精美程度。精美程度可以定义为三种宝石的乘积除以它们的最小公倍数。最小公倍数可以通过最大公约数来求得。

#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<utility>
using namespace std;
int gcd(int a,int b){if(!b)return a;return gcd(b,a%b);
}
int lcm(int a,int b){return a/gcd(a,b)*b;
}
void Solution()
{int n;cin>>n;vector<int>g(n);for(int &a:g)cin>>a;sort(g.begin(),g.end());int a=0,b=0,c=0;int maxx=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(j!=i){for(int k=0;k<n;k++){if(k!=j&&k!=i){int q,w,e,r;q=lcm(g[i],g[j]);w=lcm(g[i],g[k]);e=lcm(g[j],g[k]);r=lcm(q,g[k]);int tem=g[i]*g[j]*g[k]*r/q/w/e;if(tem>maxx){maxx=tem;a=g[i];b=g[j];c=g[k];}}}}}}cout<<a<<' '<<b<<' '<<c;return;
}
int main()
{Solution();return 0;
}


http://www.ppmy.cn/server/132556.html

相关文章

产品更新|DuoPlus云手机APP预装、批量管理功能新上线!

前言&#xff1a;在这个日新月异的时代&#xff0c;每一个微小的变化都可能引领行业新潮流&#xff0c;DuoPlus云手机基于不断创新的原则&#xff0c;把用户的体验放在第一位&#xff0c;不断对产品进行调整优化&#xff0c;力求提升用户的工作效率。 我们通过收集用户反馈&am…

阳台插入式光伏系统如何选防逆流电流互感器-安科瑞黄安南

近年&#xff0c;在海外&#xff0c;尤其是欧洲区域&#xff0c;阳台光伏异军突起&#xff0c;受到极大关注。今年2月&#xff0c;德国VDE&#xff08;德国电气工程师协会&#xff0c;直接参与德国国家标准制定&#xff09;起草文件&#xff0c;拟在确保安全情况下&#xff0c;…

【论文阅读笔记】The Chubby lock service for loosely-coupled distributed systems

文章目录 1 简介2 设计目标3 Chubby设计3.1 系统结构3.2 文件、目录、句柄3.3 锁和序列器3.4 事件通知机制和缓存3.5 Session 和 KeepAlive3.6 故障转移3.7 数据库实现3.8 备份和镜像 4 扩展机制4.1 代理4.2 分区 1 简介 Chubby是一个面向松耦合分布式系统的锁服务&#xff0c…

JavaScript下载文件(简单模式、跨域问题、文件压缩)

文章目录 简介简单文件下载通过模拟form表单提交通过XMLHttpRequest方式 跨域(oss)下载并压缩文件完整示例文件压缩跨域设置 简介 相信各位开发朋友都遇到过下载的文件的需求&#xff0c;有的非常简单&#xff0c;基本链接的形式就可以。 有的就比较复杂&#xff0c;涉及跨域…

【保姆级教程】DolphinScheduler本地部署与远程访问详细步骤解析

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

解决leetcode第3309题连接二进制表示可形成的最大数值

难度&#xff1a;中等 问题描述&#xff1a; 给你一个长度为 3 的整数数组 nums。 现以某种顺序连接数组nums 中所有元素的二进制表示 &#xff0c;请你返回可以由这种方法形成的 最大数值。 注意&#xff1a;任何数字的二进制表示不含前导零。 示例 1: 输入: nums [1,2…

ITSS服务经理认证有什么用?

在当今数字化快速发展的时代&#xff0c;ITSS 服务项目经理扮演着至关重要的角色。 ITSS 服务项目经理&#xff0c;不仅需要具备扎实的技术知识&#xff0c;还得拥有卓越的管理能力和出色的沟通技巧。他们宛如一座桥梁&#xff0c;连接着技术团队与客户需求&#xff0c;确保服…

PostgreSQL学习笔记六:模式SCHEMA

模式&#xff08;Schema&#xff09; PostgreSQL中的模式&#xff08;Schema&#xff09;是一个命名的数据库对象集合&#xff0c;包括表、视图、索引、数据类型、函数、存储过程和操作符等。模式的主要作用是组织和命名空间数据库对象&#xff0c;使得同一个数据库中可以包含…