【题目链接】

ybt 1082:求小数的某一位
OpenJudge NOI 小学奥数 7830:求小数的某一位

【题目考点】

1. 数制:求某小数位

设rrr为a/b的余数,q是整数商,那么根据
a÷b=q⋯⋯ra \div b = q \cdots\cdots ra÷b=q⋯⋯r
有ab=q+rb\frac{a}{b} = q + \frac{r}{b}ba​=q+br​
其中q是结果的整数部分,rb\frac{r}{b}br​是结果的小数部分。
假设rb\frac{r}{b}br​值为0.d1d2d3d4...0.d_1d_2d_3d_4...0.d1​d2​d3​d4​...其中did_idi​是每一位的数字。
根据按位权展开公式,有:
rb=d1⋅10−1+d2⋅10−2+d3⋅10−3...\frac{r}{b} = d_1\cdot10^{-1}+d_2\cdot10^{-2}+d_3\cdot10^{-3}...br​=d1​⋅10−1+d2​⋅10−2+d3​⋅10−3...
两边乘以10,有:
10rb=d1+d2⋅10−1+d3⋅10−2...\frac{10 r}{b} = d_1+d_2\cdot10^{-1}+d_3\cdot10^{-2}...b10r​=d1​+d2​⋅10−1+d3​⋅10−2...
10rb的余数是(10r)%b\frac{10r}{b}的余数是(10r)\%bb10r​的余数是(10r)%b
这个数的整数部分是10r−(10r)%bb=d1\frac{10r - (10r) \% b}{b} = d_1b10r−(10r)%b​=d1​,
小数部分:(10r)%bb=d2⋅10−1+d3⋅10−2...\frac{(10r) \% b}{b} = d_2\cdot10^{-1}+d_3\cdot10^{-2}...b(10r)%b​=d2​⋅10−1+d3​⋅10−2...
得到的d1d_1d1​,即为十分位数字。
同样地,将(10r)%bb\frac{(10r) \% b}{b}b(10r)%b​再乘以十,并分离整数部分,得到的就是百分位数字。
由此,总结出求小数各位数字的方法是:乘十取整
求第n位小数,就是乘十取整10次后,最后一次取整得到的整数。

2. (扩展)数制:求某位的数字

求任意进制数字整数部分某位的方法是:除基取余
求任意进制数字小数部分某位的方法是:乘基取整
其中“基”是指该数制的基数,如十进制的基数是10,十六进制的基数是16。

2. 模拟:除法竖式

除法竖式本质上就是上述运算。但一般学生对除法竖式更为了解,所以以模拟除法竖式的角度来解题也可以。

  • 设被除数为r,使r = a%b,作为最初的被除数,除数还是b。
  • 被除数r比除数b小,r乘以10,然后求r/b,得到的商写在商的位置,即为十分位的值,得到的余数作为新的被除数。
  • 此时被除数r比除数b小,r乘以10,然后求r/b,得到的商即为百分位的值,得到的余数作为新的被除数。
  • 不断循环,第n次循环求出的商即为小数点后第n位。

【解题思路】

1. 以数制中“乘10取整”的思路来做

2. 以模拟除法竖式的角度来做

两种思路写出来的代码实际是一样的。

【题解代码】

解法1:数制:乘基取整

#include<bits/stdc++.h>
using namespace std;
int main()
{int a, b, n, d;//d为某一位的数字cin >> a >> b >> n;int r = a % b;//r为分子for(int i = 1; i <= n; ++i){r *= 10;d = (r - r % b) / b;//求r除以b的商,为第i位小数r %= b;//r的新值为(10r)%b}cout << d;//第n次求出的d就是第n位数return 0;
}

解法2:模拟除法竖式

#include<bits/stdc++.h>
using namespace std;
int main()
{int a, b, n, d;//d为某一位的数字cin >> a >> b >> n;int r = a % b;//初始的被除数for(int i = 1; i <= n; ++i){r *= 10;//被除数乘以10d = r / b;//求出此次相除得到的商,即为第i位的数字r %= b;//余数作为新的被除数}cout << d;return 0;
}

信息学奥赛一本通 1082:求小数的某一位 | OpenJudge NOI 小学奥数 7830相关推荐

  1. 信息学奥赛一本通 1405:质数的和与积 | OpenJudge NOI 2.1 7827:质数的和与积 | 小学奥数 7827

    [题目链接] ybt 1405:质数的和与积 OpenJudge NOI 2.1 7827:质数的和与积 OpenJudge NOI 小学奥数 7827:质数的和与积 [题目考点] 1. 枚举 [解题 ...

  2. 信息学奥赛一本通 1084:幂的末尾 | OpenJudge NOI 小学奥数 7833

    [题目链接] ybt 1084:幂的末尾 OpenJudge NOI 小学奥数 7833:幂的末尾 [题目考点] 1. 同余定理 根据同余定理,有: (a∗b)%m=(a%m∗b%m)%m(a*b)\ ...

  3. 信息学奥赛一本通 1083:计算星期几 | OpenJudge NOI 小学奥数 7831

    [题目链接] ybt 1083:计算星期几 OpenJudge NOI 小学奥数 7831:计算星期几 [题目考点] 1. 同余定理 根据同余定理,有: (a∗b)%m=(a%m∗b%m)%m(a*b ...

  4. 信息学奥赛一本通 1080:余数相同问题 | OpenJudge NOI 小学奥数/2.1 7647:余数相同问题

    [题目链接] ybt 1080:余数相同问题 OpenJudge NOI 2.1 7647:余数相同问题 OpenJudge NOI 小学奥数 7647:余数相同问题 [题目考点] 1. 枚举 [解题 ...

  5. 信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653

    [题目链接] ybt 1005:地球人口承载力估计 OpenJudge NOI 小学奥数 7653:地球人口承载力估计 [题目考点] 保留x位小数输出浮点型数字a的写法: cout<<fi ...

  6. 信息学奥赛一本通 1081:分苹果 | OpenJudge NOI 小学奥数 7826:分苹果

    [题目链接] ybt 1081:分苹果 OpenJudge NOI 小学奥数 7826:分苹果 [题目考点] 1. 求和 [解题思路] 该问题可以抽象为:n个整数,都大于0,n个数不同,求这n个数的和 ...

  7. 信息学奥赛一本通 1014:与圆相关的计算 | OpenJudge NOI 1.3 09

    [题目链接] ybt 1014:与圆相关的计算 OpenJudge NOI 1.3 09:与圆相关的计算 [题目补充] OpenJudge中有提示,本题中圆周率只能取3.14159,这一点在ybt中没 ...

  8. 信息学奥赛一本通 1170:计算2的N次方 | OpenJudge NOI 1.6 12:计算2的N次方

    [题目链接] ybt 1170:计算2的N次方 OpenJudge NOI 1.6 12:计算2的N次方 [题目考点] 1. 高精度 考察:高精乘低精 高精度计算讲解 2. 快速幂 [解题思路] 先估 ...

  9. 信息学奥赛一本通 1411:区间内的真素数 | OpenJudge NOI 1.13 23:区间内的真素数

    [题目链接] ybt 1411:区间内的真素数 OpenJudge NOI 1.13 23:区间内的真素数 [题目考点] 1. 质数 2. 数字拆分 [解题思路] 设函数判断一个数是否是质数 设函数求 ...

最新文章

  1. 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
  2. 示波器地线应用注意问题
  3. GitHub遭炮轰:Copilot“抄袭”已经失控,为训练AI侵权整个社区
  4. SQL注入语法类型——报错注入
  5. 802.11 MAC层帧解析
  6. java操作word (jacob)
  7. 大量小文件存储提高效率要点详解
  8. [C++11]lambda表达式语法
  9. 数据结构中的树 --- 红黑树
  10. 配置数据引擎(BDE、SQL Link)的简单方法 /制做快速按钮条的方法/建立临时表的方法
  11. seam中格式化文本的处理
  12. 逆向路由器固件之敏感信息泄露 Part2
  13. Jquery截取中文字符串
  14. 【测试工具】Selenium 自动化浏览器(Python 篇)
  15. spss 因子分析非正定矩阵解决方案
  16. python雷达成像(SAR)仿真:(三)徙动校正+方位压缩(完结)
  17. 自动控制系统的典型环节
  18. AUTOSAR ArcticCore重构 - for_each_HOH
  19. html多媒体标签,元素的使用,标签大全
  20. 企业数字化转型浪潮下,大数据风控如何做决策

热门文章

  1. 开始使用Python编程
  2. sybase函数学习(八)
  3. 4段简短代码教你用Python读写Excel
  4. CANOpen同步报文
  5. Objects.equals 有坑!!!
  6. 找CTO杜仲:再谈中年危机和应对策略
  7. Jeecg-Boot 快速开发平台,新手入门教程
  8. nodejs web应用服务器搭建(一):跑起你的服务器
  9. Linux 查看ERROR日志方法
  10. 微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构