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

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

  • 题目描述
  • 思路讲解
  • 代码展示

题目描述

【算法竞赛宝典】求分数精确值_第1张图片

思路讲解

【算法竞赛宝典】求分数精确值_第2张图片

代码展示

//计算分数的精确值
#include

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;
}

你可能感兴趣的:(算法竞赛宝典,C++刷题,算法,C++)