二级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++二级练习 luogu-B2073 求小数的某一位
📅 2025-02-17·✍️ OneCoder·计算中...·⏱️ 3 分钟
#GESP#C++#多重循环
GESP二级练习,多层循环和分支练习,直觉简单的思路容易出错,难度★★☆☆☆。
luogu-B2073 求小数的某一位
题目要求
题目描述
分数 化为小数后,小数点后第 位的数字是多少?
输入格式
三个正整数 ,,,相邻两个数之间用单个空格隔开。,。
输出格式
一个数字。
输入 #1
BASH
1 2 1
输出 #1
BASH
5
题目分析
解题思路
- 读取输入的正整数a、b、n。
- 如果a等于b,则输出0并退出程序,因为在这种情况下,小数点后所有位数都是0。
- 初始化变量c用于存储小数点后第n位的数字。
- 使用循环从1到n,模拟小数点后每一位的计算过程。在每次循环中,将a乘以10,计算a除以b的商和余数,更新a为余数。
- 在第n次循环结束后,输出c的值,即小数点后第n位的数字。
注:需要注意题目给出的数据范围:
- 如果先求出结果的话,long long数据范围也不够;
- 如果用浮点数减法,没次减掉整数位的话,会因为浮点型的精度丢失问题导致不能AC。
示例代码
CPP
#include <cmath>
#include <iostream>
using namespace std; // 使用标准命名空间
int main() {
int a, b, n; // 定义变量a、b、n
cin >> a >> b >> n; // 从输入流中读取a、b、n的值
if (a == b) { // 如果a等于b
cout << 0; // 输出0
return 0; // 退出程序
}
int c; // 定义变量c
for (int i = 1; i <= n; i++) { // 从1到n遍历
a = a * 10; // 将a乘以10
c = a / b; // 计算a除以b的商
a = a % b; // 计算a除以b的余数
}
cout << c; // 输出c的值
return 0; // 退出程序
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
💬 读者留言与交流
还没有留言,快来成为第一个讨论者吧!