【蓝桥杯】43696.小数第n位
小数第n位
题目描述
我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。如果我们把有限小数的末尾加上无限多个0,那么有限小数和无限小数就都有了统一的形式。
本题的任务是:在上面的约定下,求整数除法小数点后的第 n 位开始的 3 个数字。
输入描述
输入一行三个整数:a,b,n,用空格分开。a是被除数,b是除数,n 是所求的小数后位置(0<a, b,n< 109)
比如,a=1,b=8,则a/b=1/8=0.125。如果n=1,输出为125;n=2,输出为250;n=3,输出为500
输出描述
输出一行 3 位数字,表示:a 除以 b,小数后第 n 位开始的 3 位数字。
输入输出样例
示例
输入
1 8 1
输出
125
一般解法(然并卵)
1,将a/b的结果保存为字符串;
2,把字符串中小数点的位置找出来,然后向后移动n位;
3,对字符串切片,把index+n : index+n+3的子字符串截取出来;
4,如果子字符串的长度不够,末尾用0补足
import os
import sys# 请在此输入您的代码
a, b, n = map(int, input().split())
# 先进行除法运算得到小数形式(字符串表示),注意Python中整数除法会得到整数结果,这里要转为浮点数除法
result = str(a / b)
# print(result)# 找到小数点的位置
dot_index = result.find('.')# 如果n大于总长度(包含小数点)则不符合要求,
if dot_index + n < len(result) and n < 1000000000:# 提取从第n位开始的3位数字sub_result = result[dot_index + n: dot_index + n + 3]# 如果不足3位数字,在末尾补0if len(sub_result) < 3:sub_result += '0' * (3 - len(sub_result))
print(sub_result)
输入输出结果略。
然后就是只通过了一个测试用例。心中挺纳闷的。
后来看了其他作者分享的内容,才知道自己想法错了。
https://blog.csdn.net/red_red_red/article/details/89843256,
https://blog.csdn.net/A_ACM/article/details/88304399
换个思路,这道题的解法是这样:
1,获得a,b,n并转换为整数。
2,目标值即为(a ÷ b)× 10n+2 % 1000 = a× 10n+2 % (b × 1000)/ b
3,然后用快速求幂
感谢@胡歌爱亦菲 ,感谢@qdu_zhaiH,虽然还是一头雾水没看怎么看懂。
代码实现:
Python 实现
# 快速幂函数,用于计算a的b次方对mod取模的结果
def q_pow(a, b, mod):res = 1while b:if b & 1:res = (res * a) % moda = (a * a) % modb >>= 1return res# 使用map函数将输入的字符串转换为整数,并分别赋值给a1, b1, n
a1, b1, n = map(int, input().split())# 计算取模的数值
mod = b1 * 1000
# 调用快速幂函数计算结果
res = q_pow(10, n + 2, mod)
# 进行临时计算
tem = (a1 % mod * res % mod) % mod
# 按照格式化要求输出结果,确保输出三位宽度,不足三位前面补0
print(f"{tem // b1:03d}")
JAVA 实现
import java.util.Scanner;public class Main {// 快速幂函数,用于计算a的b次方对mod取模的结果static long q_pow(long a, long b, long mod) {long res = 1;while (b > 0) {if ((b & 1) == 1) {res = (res * a) % mod;}a = (a * a) % mod;b >>= 1;}return res;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 获取用户输入的三个整数,分别赋值给a1, b1, nlong a1 = scanner.nextLong();long b1 = scanner.nextLong();long n = scanner.nextLong();// 计算取模的数值long mod = b1 * 1000;// 调用快速幂函数计算结果long res = q_pow(10, n + 2, mod);// 进行临时计算long tem = (a1 % mod * res % mod) % mod;// 按照格式化要求输出结果,确保输出三位宽度,不足三位前面补0System.out.printf("%03d\n", tem / b1);scanner.close();}
}
C++实现
#include <iostream>
using namespace std;// 快速幂函数,用于计算a的b次方对mod取模的结果
long long q_pow(long long a, long long b, long long mod) {long long res = 1;while (b > 0) {if (b & 1) {res = (res * a) % mod;}a = (a * a) % mod;b >>= 1;// 右移操作,相当于b /= 2;}return res;
}int main() {long long a1, b1, n;// 获取用户输入的三个整数cin >> a1;cin >> b1;cin >> n;long long mod = b1 * 1000;// 调用快速幂函数计算结果long long res = q_pow(10, n + 2, mod);long long tem = (a1 % mod * res % mod) % mod;// 按照格式化要求输出结果,确保输出三位宽度,不足三位前面补0printf("%03lld\n", tem / b1);return 0;
}
C 实现
#include <stdio.h>// 快速幂函数,用于计算a的b次方对mod取模的结果
long long q_pow(long long a, long long b, long long mod) {long long res = 1;while (b > 0) {if (b & 1) {res = (res * a) % mod;}a = (a * a) % mod;b >>= 1;// 右移操作,相当于b /= 2;}return res;
}int main() {long long a1, b1, n;// 获取用户输入的三个整数scanf("%lld", &a1);scanf("%lld", &b1);scanf("%lld", &n);long long mod = b1 * 1000;// 调用快速幂函数计算结果long long res = q_pow(10, n + 2, mod);long long tem = (a1 % mod * res % mod) % mod;// 按照格式化要求输出结果,确保输出三位宽度,不足三位前面补0printf("%03lld\n", tem / b1);return 0;
}
相关文章:
【蓝桥杯】43696.小数第n位
小数第n位 题目描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。如果我们把有限小数的末尾加上无限多个0,那么有限小数和无限小数就都有了统一的形式。 本题的任务是:在上面的约定下,求整数除法…...
进程间通信方式---消息队列(System V IPC)
进程间通信方式—消息队列(System V IPC) 文章目录 进程间通信方式---消息队列(System V IPC)消息队列1.消息队列进程间通信原理2.msgget 系统调用3.msgsnd 系统调用4.msgrcv 系统调用5.msgctl 系统调用6.函数使用案例7.实现生产者…...
windows10 安装wsl、迁移到其他盘
介绍一下在windows10 安装和迁移wsl。由于公司发了通知不能在使用docker desktop,只能另找方法使用docker了,于是想安装一个wsl,然后在装一个docker。 安装wsl ## 查看wsl 版本 wsl.exe --list --online## 安装Ubuntu-22.04 wsl.exe --inst…...
el-divide(vue3总)
分割线 使用...
python —— 常用命令行的命令
目 录 python命令行查看安装版本查看安装路径升级pip工具安装包升级包卸载安装包查看包的信息详情查询已安装的包查询可升级的包显示包所在目录及信息搜索包使用指定版本运行脚本运行常见错误 python命令行 产品研发中通常需要使用一些小工具来辅助调试功能,比如采…...
C++ 23版的最新特性
C 23 是 C 编程语言的最新标准版本,于 2023 年正式发布,带来了诸多新特性与改进,以下是一些主要内容: 1.语言特性 1.显式对象参数(Deducing this):显式对象参数(Deducing this&…...
什么是 Memory-bound stalls,以及如何优化
Memory-bound stalls 是指在计算机系统中,程序的性能受到内存访问速度的限制,导致处理器无法高效执行指令。这种情况通常发生在 CPU 需要等待数据从内存中加载时,而不是在执行计算或处理指令时。 Memory-bound stalls 的成因 访问延迟&…...
机器学习 | 非线性回归拟合数据时的离群值检测
非线性回归是一种用于模拟变量之间复杂关系的强大工具。然而,离群值的存在可能会显着扭曲结果,导致参数估计不准确和预测不可靠。因此,检测离群值对于稳健的非线性回归分析至关重要。本文深入研究了在非线性回归中识别离群值的方法和技术&…...
使用elasticsearch-head插件修改elasticsearch数据
1、先使用elasticsearch-head插件基本查询功能找到要修改的数据 2、切换到复合查询界面 url: http://es的ip地址:端口号/索引名称/文档类型(没特殊设置过就是_doc)/文档id/ 例子:http://127.0.0.1:9200/tab_inout_record/_doc/84…...
202412月最新植物大战僵尸杂交版【V3.0.1】更新内容与下载
以下是对UI优化和新内容添加的摘要: UI优化摘要: 主界面重做:对游戏的主界面进行全面的设计更新,提升用户体验。商店重做:对游戏内的商店界面进行重新设计,以改善玩家的购物体验。选卡界面增加图鉴功能&a…...
游戏渠道假量解决方案
某推广公司在推广过程中被查出“短期内点击量激增”“存在同一地址多次访问”“已注册用户重复注册”等数据作弊行为,法院判罚退还服务费200余万元,并赔偿违约金约350万元。 某公司为提升其游戏在应用商店榜单排名,委托某网络公司进行下载、注…...
Java系统对接企业微信审批项目流程
若依做的一个系统需求需要对接企业微信的人员去审核订单 回款之类,以下是详细步骤. 1.首先登入企业微信管理后台: 企业微信 2.找到应用管理 3.自建一个应用 4.这些数据都可以拿到 5.配置可信Ip 6.进入有两种方法让你去配置 ,第一种用公司的…...
基于Springboot人口老龄化社区服务与管理平台【附源码】
基于Springboot人口老龄化社区服务与管理平台 效果如下: 系统登陆页面 系统主页面 社区信息页面 社区文件页面 活动报名页面 走访任务管理页面 社区资讯页面 老人信息管理页面 研究背景 随着社会老龄化的加剧,老年人口比例逐渐增加,对老年…...
Dot Foods EDI 需求分析及对接流程
Dot Foods 是一家美国领先的食品和非食品产品的中间批发分销商,主要为食品服务、零售和分销行业的客户提供服务,是北美大型食品中间分销商之一。Dot Foods (以下简称 Dot)的业务模式是通过整合多个供应商的产品,为客户…...
代码随想录day24 | leetcode 93.复原IP地址 90.子集 90.子集II
93.复原IP地址 Java class Solution {List<String> result new ArrayList<String>();StringBuilder stringBuilder new StringBuilder();public List<String> restoreIpAddresses(String s) {backtracking(s, 0, 0);return result;}// number表示stringb…...
探索国产数字隔离器——测试与应用
国产数字隔离器已成为现代电子产品中的关键部件,以增强的性能和可靠性取代了传统的光耦合器。这些隔离器广泛应用于医疗设备、汽车电子、工业自动化和其他需要强大信号隔离的领域。准确测试这些设备是确保其质量和性能的基本步骤。 如何测试数字隔离器 测试数字隔离…...
IDEA无法打开插件市场的解决
1.版本 我的IDEA版本号为2020.1.4 大家可以从IDEA的help->about进行版本号的查看 2.解决 我们直接到jetbrains官网搜索你想要下载的插件 直接下载即可自动导入...
以腾讯混元模型为例,在管理平台上集成一个智能助手
背景 前几天,公司的同事们一起吃了个饭,餐桌上大家聊到大模型的落地场景。我个人在去年已经利用百度千帆平台写过案例,并发过博客(传送门👉:利用文心千帆打造一个属于自己的小师爷),…...
15.初识接口1 C#
这是一个用于实验接口的代码 适合初认识接口的人 【CSDN开头介绍】(文心一言AI生成) 在C#编程世界中,接口(Interface)扮演着至关重要的角色,它定义了一组方法,但不提供这些方法的实现。它要求所…...
探索 Python编程 调试案例:计算小程序中修复偶数的bug
在 学习Python 编程的过程里,会遇到各种各样的bug。而修复bug调试代码就像是一场充满挑战的侦探游戏。每一个隐藏的 bug 都是谜题,等待开发者去揭开真相,让程序可以顺利运行。今天,让我们通过一个实际案例,深入探索 Py…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
