当前位置: 首页 > article >正文

蓝桥杯15 填空题

1.握手问题:

思路:首先当所有人都握过手,由于一次握手相当于两个人都握手过,所以容易发现这是一个组合问题,为(50*49)/2,而其中有7个人没有相互握过手,那么减去(7*6)/2,结果为1204.

2.小球反弹:

思路:如果直接按照题意画路径会发现很复杂,也比较难直接找到打到角落的条件,这时候可以想到化曲为直,复杂问题简单化,在初中的时候学过光的反射,也画过镜子的光路图,按镜面对称不会改变光的路程,这里也是一样的,把左面扩展开来,最终当dx和dy分别是343720和233333的倍数即可。

细节

1) 如何对浮点数四舍五入至保留两位小数?直接看很难找到相应的函数,但是我们可以想到round 它的功能是找到一个与浮点数最近的整数,比如2.77离3近,则为3,2.11离 2近,则为2。如果我们将一个数先乘100,用round操作之后再除以100,岂不是可以达到四舍五入保留两位小数的效果了?

2) 还有sum最后再用勾股定理算比较合适,因为要算斜边又一直直角边比例是要用到开方的,而sqrt只能用于double型数据, 而验证是否符合条件时又要用到%,会冲突。

  1. cout 会以科学计数法输出浮点数,而fixed会强制输出小数格式。

  2. std::setprecision(n)

    • 它会设置小数点后保留的位数。

    • 如果n小于浮点数的实际小数位数,多余的位数会被截断(不会四舍五入)。

    • 如果n大于浮点数的实际小数位数,多余的位数会显示为0。

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long t = 1, x = 343720, y = 233333;

    // 找到满足条件的最小 t
    while (1) {
        if ((15 * t) % x == 0 && (17 * t) % y == 0)
            break;
        t++;
    }

    // 计算路径长度
    double path_length = 2 * sqrt(15 * 15 * t * t + 17 * 17 * t * t);

    // 四舍五入到两位小数
    double ans = round(path_length * 100) / 100;

    // 输出结果
    cout << fixed << setprecision(2) << ans << endl;

    return 0;
}


http://www.kler.cn/a/558388.html

相关文章:

  • STM32的HAL库开发---多通道ADC采集(DMA读取)实验
  • 【Spring+MyBatis】_图书管理系统(下篇)
  • 基于 Python+OpenCV 的疲劳检测系统设计与实现(源码+文档)
  • android studio kotlin项目build时候提示错误 Unknown Kotlin JVM target: 21
  • go 并发 gorouting chan channel select Mutex sync.One
  • 国产编辑器EverEdit - 在编辑器中对文本进行排序
  • 便捷批量字符一键查找替换工具
  • 从卡顿到丝滑:火山引擎DeepSeek-R1引领AI工具新体验
  • 传统的自动化行业的触摸屏和上位机,PLC是否会被取代?
  • 学习PostgreSQL专家认证
  • 蓝桥杯 Java B 组之背包问题、最长递增子序列(LIS)
  • 火语言RPA--Excel清空数据
  • AI前端开发助力自主创业:拥抱AI,开启你的创业之旅
  • Spring Boot ShardingJDBC分库分表(草稿)
  • 鸿蒙NEXT开发-应用数据持久化之键值型数据库
  • 【OS安装与使用】part6-ubuntu 22.04+CUDA 12.4运行MARL算法(多智能体强化学习)
  • SpringBoot启动失败之application.yml缩进没写好
  • brew Nushell mac升级版本
  • 前端排序算法完全指南:从理论到实践
  • Docker 的安全配置与优化(二)