历届试题-小数第n位[蓝桥杯][思维]

博客介绍了如何解决在蓝桥杯比赛中遇到的求整数除法小数点后第n位开始的3位数问题。通过优化算法,以十位为单位进行计算,降低时间复杂度到O(1e8)。讨论了循环节的概念,并推荐了一篇相关博客来深入理解解题方法。
摘要由CSDN通过智能技术生成

小数第 n n n位[思维]

time limit per test memory limit per test input output
1 seconds 256 megabytes standard input standard output

Description:

我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。
如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。
本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。

Input

一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1000000000)

Output

一行3位数字,表示:a除以b,小数后第n位开始的3位数字。

One Example input

1 8 1

One Example output

125

Two Example input

1 8 3

Two Example output

500

Three Example input

282866 999000 6

Three Example output

914

分析:
题意:
思维很简单,就是直接做会超时
因此可以加个步骤,每次直接十位十位地算,这样时间复杂度可以降为O(1e8)
还是要多加思考,第一发想说莽过去(果然不能莽啊,毕竟蓝桥杯是一次性提交的 Q A Q QAQ QAQ

解释一下代码
先回顾一下原本的除法
63 ÷ 13 = 4.846153846153846... 63 \div 13 = 4.846153846153846... 63÷13=4.846153846153846...
那么我们要求小数点后的数可以先求出当前的余数 63 % 13 = 11 63 \% 13 = 11 63%13=11
求余数是因为我们所得到的小数,其实就是这个余数继续 ÷ 13 \div 13 ÷13 所得到的
比如现在相求的是小数点后第二、三、四位,令 a = 11 , x = 0 , i d = 1 a = 11, x = 0, id=1 a=11,x=0,id=1
x x x 表示所要的余数那几位的数, i d id i

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值