蓝桥杯刷题——day9

news2024/12/23 20:13:34

蓝桥杯刷题——day9

  • 题目一
    • 题干
    • 解题思路一
    • 代码
    • 解题思路二
    • 代码
  • 题目二
    • 题干
    • 解题思路
    • 代码

题目一

题干

小蓝最近在研究一种浮点数的表示方法:R格式。对于一个大于0的浮点数d,可以用R格式的整数来表示。给定一个转换参数n,将浮点数转换为R格式整数的做法是:

  1. 将浮点数乘以2n
  2. 四舍五入到最接近的整数。

输入: 一行一个整数n和一个浮点数d。
输出: 一行一个整数表示d用R格式表示出的值。

示例一:

输入:
2 3.14
输出:
13

题目链接: R格式

解题思路一

乍一看感觉这道题目不是很简单,不就是数的运算嘛,输入两个数n和d,然后输出2n×d的四舍五入结果。我们来看完整代码:

代码

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long num1 = scanner.nextInt();
        double num2 = scanner.nextDouble();
        double num = Math.pow(2,num1) * num2;
        long rounded = Math.round(num);
        System.out.println(rounded);
    }
}

很简单对不对,但是我们发现用这个去提交代码并不能完全通过,问题出在哪里呢?当 num1很大时,Math.pow(2, num1) 会导致浮点数溢出或精度丢失,可能无法准确表示结果。那么自然num就会跟我们想要的不一样了,那么我们应该如何解决呢?

解题思路二

我们直接看代码:

代码

import java.util.Scanner;
public class Main {
    static int n, p, l;
    static int[] a = new int[114514];  // 数组大小适当设置
    static String q;

    // 乘法操作
    static void mul() {
        for (int i = 1; i <= l; i++) {
            a[i] *= 2;  // 按位乘以2
        }
        // 进位处理
        for (int i = 1; i <= l; i++) {
            a[i + 1] += a[i] / 10;  // 进位到下一位
            a[i] %= 10;  // 保留当前位的个位数
        }
        // 如果最高位有进位,需要增加长度
        if (a[l + 1] != 0) {
            l++;
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 输入整数n和小数q
        n = scanner.nextInt();
        q = scanner.next();
        
        // 反转小数q,方便后续处理
        StringBuilder sb = new StringBuilder(q);
        q = sb.reverse().toString();
        
        // 查找小数点位置
        p = q.indexOf('.');
        q = q.replace(".", "");  // 删除小数点
        
        // 设置小数的总长度
        l = q.length();
        
        // 将字符串转为整数数组
        for (int i = 0; i < l; i++) {
            a[i + 1] = q.charAt(i) - '0';  // 将字符转换为数字
        }
        
        // n次乘以2
        for (int i = 0; i < n; i++) {
            mul();
        }

        // 小数部分四舍五入
        if (a[p] >= 5) {
            a[p + 1]++;
        }
        
        // 进位检查
        for (int i = p + 1; i <= l; i++) {
            a[i + 1] += a[i] / 10;  // 进位到下一位
            a[i] %= 10;  // 保留当前位的个位数
        }
        
        // 再次检查最高位
        if (a[l + 1] != 0) {
            l++;
        }
        
        // 输出结果(逆序输出)
        for (int i = l; i > p; i--) {
            System.out.print(a[i]);
        }
    }
}

首先,我们进行变量的定义,n:表示要进行的乘法次数。p:表示小数点的位置。l:表示小数部分的长度。a:一个数组,用来存储小数部分的每一位数字。a[i]表示从小数点开始的第i位数字(数组从1开始存储)。然后定义一个函数mul(),这个函数用于将存储在数组a中的数字乘以2,并处理进位。主函数中中我们接受包括整数n(表示乘法次数)和字符串q(表示小数),为了方便处理,反转字符串q。通过q.indexOf(‘.’)找到小数点的位置,并将小数点删除。通过for循环,调用mul()方法n次,即实现将小数部分乘以2的操作。每次调用mul()都会修改数组a中的数字。在完成n次操作后,判断小数点前面一个数子的大小(我们在删除小数点时记录了位置),如果大于5就进一,小于5就舍去小数点后面的数字,最后,程序输出乘法后的结果(反转后的结果),问题解决。

题目二

题干

今年是2021年,2021这个数字非常特殊, 它的千位和十位相等, 个位比百位大11,我们称满足这样条件的年份为特殊年份。输入5个年份,请计算这里面有多少个特殊年份。
输入: 输入5行,每行一个4位十进制数(数值范围为1000 至9999),表示一个年份。
输出: 输出一个整数,表示输入的5个年份中有多少个特殊年份。
示例一:

输入:
2019
2021
1920
2120
9899
输出:
2

题目地址: 特殊年份

解题思路

这条题目非常的简单,取出4位的每一位数字,然后判断十位和千位是否相同,并且个位是否比百位大一,如果同时满足,计数器就加1,下面是完整代码:

代码

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] arr = new int[5];
        for (int i = 0; i < 5; i++) {
            arr[i] = scanner.nextInt();
        }
        int num = 0;
        for (int i = 0; i < 5; i++) {
            int one = arr[i] % 10;
            int two = (arr[i] / 10) % 10;
            int three = (arr[i] / 100) % 10;
            int four = (arr[i] / 1000) % 10;
            if (two == four && one-three ==1){
                num++;
            }
        }
        System.out.println(num);
    }
}

如果有任何的问题,欢迎评论和私信,也感谢各位的点赞和收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7-Zip 加密功能使用教程:如何设置密码保护压缩文件

压缩包如何加密&#xff1f;7-Zip 是一款开源的文件归档工具&#xff0c;支持多种压缩格式&#xff0c;并提供了对压缩文件进行加密的功能。使用 7-Zip 可以轻松创建和解压 .7z、.zip 等格式的压缩文件&#xff0c;并且可以通过设置密码来保护压缩包中的数据不被未授权访问。 准…

[计算机网络]ARP协议的故事:小明找小红的奇妙旅程

1.ARP小故事 在一个繁忙的网络世界中&#xff0c;每个设备都有自己的身份标识——MAC地址&#xff0c;就像每个人的身份证号码一样。在这个故事里&#xff0c;我们的主角小明&#xff08;主机&#xff09;需要找到小红&#xff08;目标主机&#xff09;的MAC地址&#xff0c;才…

新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github

经过近3个月的迭代开发&#xff0c;新版本的国标GB28181设备端EasyGBD安卓Android版终于在昨天发布到Github了&#xff0c;最新的EasyGBD支持了国标GB28181-2022版&#xff0c;还支持了语音对讲、位置上报、本地录像等功能&#xff0c;比原有GB28181-2016版的EasyGBD更加高效、…

McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构

原文链接 1 mcdonalds-technical-blog/ 原文链接 2 mcdonalds-technical-blog/ 麦当劳在异步、事务性和分析性处理用例中使用跨技术栈的事件&#xff0c;包括移动订单进度跟踪和向客户发送营销通信&#xff08;交易和促销&#xff09;。 统一事件平台&#xff08;unified eve…

【CSS in Depth 2 精译_089】15.2:CSS 过渡特效中的定时函数

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 15 章 过渡】 ✔️ 15.1 状态间的由此及彼15.2 定时函数 ✔️ 15.2.1 定制贝塞尔曲线 ✔️15.2.2 阶跃 ✔️ 15.3 非动画属性 文章目录 15.2 定时函数 Timing function…

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好&#xff0c;今天给大家分享一个开源的自托管虚拟浏览器项目Neko&#xff0c;旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;提供…

AW36518芯片手册解读(3)

接前一篇文章&#xff1a;AW36518芯片手册解读&#xff08;2&#xff09; 二、详述 3. 功能描述 &#xff08;1&#xff09;上电复位 当电源电压VIN降至预定义电压VPOR&#xff08;典型值为2.0V&#xff09;以下时&#xff0c;该设备会产生复位信号以执行上电复位操作&#x…

浅谈目前我开发的前端项目用到的设计模式

浅谈目前我开发的前端项目用到的设计模式 前言 设计模式很多&#xff0c;看到一个需求&#xff0c;项目&#xff0c;我们去开发的时候&#xff0c;肯定是做一个整体的设计进行开发&#xff0c;而在这次我项目中&#xff0c;我也做了一个整体的设计&#xff0c;为什么要设计&a…

线性规划中的几种逻辑表达式

线性规划中的几种逻辑表达式 注意&#xff1a; 摘录字刘博士的《数学建模与数学规划》&#xff0c; 以便用时可查。 实际上Gurobi API 中自身放啊变的逻辑表达式函数&#xff0c;下面列出自定义的实现方式。 1 逻辑与 如果 x 1 1 x_1 1 x1​1, x 2 1 x_2 1 x2​1, 那…

JVM对象分配内存如何保证线程安全?

大家好&#xff0c;我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全&#xff1f;】面试题。希望对大家有帮助&#xff1b; JVM对象分配内存如何保证线程安全&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;对象的内存分配…

Antd react上传图片格式限制

限制分辨率&#xff08;像素&#xff09; <a-upload :before-upload"beforeUpload">// 上传图片宽高比例限制const beforeUpload file > {return new Promise((resolve, reject) > {// // 图片类型限制// let isJpgOrPng file.type image/png || fil…

基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作

协议设计目标 1. 安全性&#xff1a;通过 iAP2 协议与 MCU 设备进行安全通信。 2. 通用性&#xff1a;支持对安防设备的常见功能进行操作&#xff0c;如状态查询、设备控制、参数配置等。 3. 高效性&#xff1a;数据结构简洁清晰&#xff0c;易于解析和扩展。 4. 扩展性&#x…

Type-C单口便携屏LDR6021

随着科技的飞速发展&#xff0c;便携式电子产品在我们的日常生活中扮演着越来越重要的角色。在这一背景下&#xff0c;Type-C单口便携显示器作为一种新兴的显示设备&#xff0c;凭借其独特的优势迅速崭露头角&#xff0c;成为市场的新宠。本文将深入探讨Type-C单口便携显示器的…

Ubuntu 20.04 卸载和安装 MySQL8.0

卸载 首先&#xff0c;检查一下系统安装的软件包有哪些&#xff0c;使用dpkg -l | grep mysql命令&#xff1a; 为了将MySQL卸载干净&#xff0c;这些文件都需要被删除。 在Ubuntu20.04系统下&#xff0c;卸载干净MySQL8.0以确保下一次安装不会出错&#xff0c;可以按照以下…

NOTEBOOK_11 汽车电子设备分享(工作经验)

汽车电子设备分享 摘要 本文主要列出汽车电子应用的一些实验设备和生产设备&#xff0c;部分会给予一定推荐。目录 摘要一、通用工具&#xff1a;二、测量与测试仪器2.1测量仪器2.2无线通讯测量仪器2.3元器件测试仪2.4安规测试仪2.5电源供应器2.6电磁兼容测试设备2.7可靠性环境…

黑马Java面试教程_P8_并发编程

系列博客目录 文章目录 系列博客目录前言1.线程的基础知识1.1 线程和进程的区别&#xff1f;难2频3面试文稿 1.2 并行和并发有什么区别&#xff1f; 难1频1面试文稿 1.3 创建线程的四种方式 难2频4面试文稿 1.4 runnable 和 callable 有什么区别 难2频3面试文稿 1.5 线程的 run…

【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap

re:Invent 是全球云计算领域的顶级盛会&#xff0c;每年都会吸引来自世界各地的技术领袖、创新者和实践者汇聚一堂&#xff0c;分享最新的技术成果和创新实践&#xff0c;深圳 UG 作为亚马逊云科技技术社区的重要组成部分&#xff0c;将借助 re:Invent 的东风&#xff0c;举办此…

一起学Git【第二节:创建版本库】

创建库 这个库相当于一个目录&#xff0c;目录中的文件都被Git管理&#xff0c;会记录每个文件的修改删除和添加工作&#xff0c;便于之后随时跟踪历史记录还原到之前的某一版本。如何创建库呢&#xff1f;有两种方式&#xff0c;本地创建库和云端克隆一个库。 1.本地创建库 …

本地部署webrtc应用怎么把http协议改成https协议?

环境&#xff1a; WSL2 Ubuntu22.04 webrtc视频聊天应用 问题描述&#xff1a; 本地部署webrtc应用怎么把http协议改成https协议&#xff1f; http协议在安卓手机浏览器上用不了麦克风本&#xff0c;来地应用webrtc 本来是http协议&#xff0c;在安卓手机上浏览器不支持使…

web实操8-cookie

会话技术 会话&#xff1a; 一次会话中包含多次请求和响应。 客户端浏览器访问服务器的资源&#xff0c;只要客户端或者服务器端不关闭&#xff0c;这始终在一次会话范围内&#xff0c;这一次会话范围内可以包含多次请求并且收到多次相应。 一次会话&#xff1a;浏览器第一…