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

server/2024/10/15 18:20:49/

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/132309.html

相关文章

[已解决]Mac使用更改idea.vmoptions文件导致idea打不开

直接在访达中全局搜索 idea.vmoptions 文件&#xff0c;然后根据报错信息更改成默认的或者更改成默认的格式即可。

锦锐科技CA51F7系列笔记

1、PWM &#xff08;1&#xff09;芯片一共有6个PWM通道&#xff08;PWM0~PWM5&#xff09; &#xff08;2&#xff09;IRCH时钟&#xff08;IRCH 频率为 16MHz&#xff09; &#xff08;3&#xff09;IRCL时钟&#xff08;IRCL频率为100KHz&#xff09; &#xff08;4&…

智能叉车管理系统,提高仓库安全性

在N2023B智能叉车系统的深入应用中&#xff0c;人脸识别认证技术不仅成功解决了人员使用混乱的问题&#xff0c;还进一步提升了仓库与物流中心的安全性与管理效率。系统通过高精度的人脸识别算法&#xff0c;能够在毫秒级时间内完成员工的身份验证&#xff0c;确保只有经过授权…

Kubernetes(K8s)的简介

一、Kubernetes的简介 1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个阶段&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;不能为应…

CC2530定时器1实现查询定时1-2

1源码 #include "iocc2530.h"void led_init(){P1SEL &~0xff;//通用ioP1DIR |0x01;//输入输出P1_00;//灭灯 }void T1_init(){T1CTL 0x0d;//设置分频&#xff0c;和模式(128分频&#xff0c;0x0000~0xffff) // 最大计数值定时时长/定时器计数周期0.25/&#xff08…

【揭秘】短剧小程序爆火背后:狗血剧情背后的百万商机!

近年来&#xff0c;随着移动互联网的迅猛发展&#xff0c;短视频和短剧逐渐成为人们日常娱乐消遣的新宠儿。尤其是一些充满戏剧冲突、情节紧凑的短剧&#xff0c;在各大社交平台上迅速走红&#xff0c;吸引了大量年轻用户的关注。今天我们就来揭开这些短剧小程序爆火的秘密&…

基于YOLOv11的车辆行人实时检测系统(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

上百种【基于YOLOv8/v10/v11的目标检测系统】目录&#xff08;pythonpyside6界面系统源码可训练的数据集也完成的训练模型&#xff09;-CSDN博客 ............................................................................................ 摘要&#xff1a; 本文提出了…

鸿蒙--播放器状态控制

各个页面共享同一个播放状态,而且可以互相控制,如果传递来传递去会非常的麻烦,但是他们都是Tabs组件内的,我们在index页面提供一个状态,在各个组件接收即可 创建两个子组件,一个是播放控制的子组件,一个是背景播放的子组件 背景播放组件