【算法竞赛宝典】求分数精确值

【算法竞赛宝典】求分数精确值

题目描述

在这里插入图片描述

思路讲解

在这里插入图片描述

代码展示

//计算分数的精确值
#include<iostream>

using namespace std;
int remainder[101], quotient[101];
//remainder:存放除法的余数;quotient:依次存放商的每一位

int main() {
    int m, n, i, j;
    cin >> m >> n;      //输入被除数和除数
    cout << m << "/" << n << "=0.";
    for (i = 1; i <= 100; i++)  //i: 商的位数
    {
        remainder[m] = i; //m:除的余数 remainder[m]:该余数对应的商的位数
        m *= 10;          //余数扩大10位
        quotient[i] = m / n; //商
        m = m % n;           //求余数
        if (m == 0) //余数为0,即除完了
        {
            for (j = 1; j <= i; j++) //则表示是有限小数
                cout << quotient[j];  //输出商
            break;             //退出循环
        }
        if (remainder[m] != 0) //若该余数对应的位在前面已经出现过
        {
            for (j = 1; j <= i; j++)
                cout << quotient[j];  //则输出循环小数
            cout << "\n是无限循环小数,并从小数点后" << remainder[m] << "位";
            cout << "到" << i << "位\n";//输出循环节的位置
            break;                //退出
        }
    }
//    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值