【高精度】高精度分数

时间限制: 1 Sec 内存限制: 64 MB

题目描述

“人无远虑,必有近忧”是修罗王一直以来恪守的信条,为了以防万一,他在很久以前就将《魔法宝典》的全部信息编码为一个巨大无比的自然数,并在这个数前加一个0和小数点,使它变成一个分数。然后他在戒指上刻了一个记号,使记号的两端长度比等于这个分数。这样,虽然他在入狱时手上只带了一个戒指,但只要测量出戒指上记号的比值M/N,他就可以还原《魔法宝典》的全部信息。

现在的问题是:已知分数M/N,试计算M/N的值。如果M/N是无限循环小数,则计算并输出它的第一循环节,同时要求输出循环节的起止位置(小数位的序号)。

输入

只有一行,即M/N,其中0 < M < N < 100。

输出

输出M/N的值,如为无限循环小数,则输出第一循环节及起止位置。

样例输入

17/97

样例输出

17/97=0.175257731958762886597938144329896907216494845360824742268041237113402061855670103092783505154639

from 1 to 96

提示

【输入样例2】

1/2

【输出样例2】

1/2=0.5

可以将商存放在一维数组中,进行除法运算,模拟人的手工操作,即每次求出商的一位后,将余数乘以10,再计算商的下一位。若某次余数为0,则为有限不循环小数。若某次计算后的余数与前面某个余数相同时,则M / N是无限循环小数。

代码[c++]

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
const int maxn = 105; int main()
{
int m,n;
while(scanf("%d/%d",&m,&n)!=EOF)
{
int modnum[100] = {0};//记录每个余数出现的次数(余数的范围0~98)
printf("%d/%d=0.",m,n);
int div[maxn] = {0};
int k=-1;
int judge=1;
modnum[m]=1;//将被除数也算作余数
for(int i=1; i<105&&k==-1; i++)
{
m*=10;
div[i]=m/n;
m=m%n;
if(modnum[m])//若某次计算后的余数与前面某个余数相同时,则M/N是无限循环小数
{
k=i+1;
judge=0;
break;
}
modnum[m]=i+1;
if(modnum[0])//若某次余数为0,则为有限不循环小数
{
k=i+1;
break;
}
}
for(int i=1; i<k; i++)
printf("%d",div[i]);
printf("\n");
if(!judge)//输出循环节
printf("from %d to %d\n",modnum[m],k-1);
}
return 0;
}

【高精度】高精度分数[c++]的更多相关文章

  1. 【推导】【贪心】【高精度】Gym - 101194E - Bet

    题意:每个队伍有个赔率pi,如果你往他身上押x元,它赢了,那么你得到x+(1/pi)x元,否则你一分都得不到.问你最多选几支队伍去押,使得存在一种押的方案,不论你押的那几支队伍谁赢,你都能赚得到钱. ...

  2. 【高精度练习+卡特兰数】【Uva1133】Buy the Ticket

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  3. 高精度运算略解 在struct中重载运算符

    高精度 高精度,即高精度算法,属于处理大数字的数学计算方法.在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字. 重载运算符 运算符重载,就是对已有的运算符重新进行 ...

  4. 算法模板 - C++ 高精度运算

    C++算法板子 高精度 高精度推荐用python来写,python有大整数,这里写的是关于C++的高精度运算模板 1.高精 * 低精 #include <iostream> #includ ...

  5. ACM基础板子

    新生赛以后就正式成为一名acmer啦 ~虽然没有打过比赛呜呜呜 要好好学算法,拿一个牌牌嘛~ 这里就记录算法学习情况,也怕自己偷懒,学一个就记录,看看长时间拖更就是在摸鱼,摸鱼和鸽子都是本质 ,加油! ...

  6. 二模 (12) day1

    第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码 ...

  7. C#装箱,拆箱和强制转换(转)

    出处:https://www.cnblogs.com/fengjiulin110120/p/6605739.html 关系: 强制转换就包含有装箱拆箱操作,装箱就是把值类型转换成引用类型,反之就是拆箱 ...

  8. AcWing算法基础1.4

    高精度 高精度加法,高精度减法,高精度乘低精度,高精度除以低精度,大概平时用的最多的就是这四个,模板有两种(因为我现在不太会用vector,就用数组也写了个,23333) 高精度运算和人工手算差不多, ...

  9. 秘制CSP模板

    不定期更细中...... 声明1:由于js的问题导致VIEW CODE按钮只能点"I"附近才能展开代码 声明2:为了排版的美观,所有的解释以及需要留意的地方我都放在代码中了 声明3 ...

随机推荐

  1. [转] 简述js中 for in 与 for of 区别

    for in是ES5标准,遍历key. for of是ES6标准,遍历value. for (var key in arr){ console.log(arr[key]); } for (var va ...

  2. HL7体系入门级介绍【转】

    HL7的简单介绍1)HL7  缩写于Health Level Seven,是创建于1987年,用来发展独立卫生保健行业的电子交换交换标准,经过多年的发展,HL7已经有多个版本,     目前我们 的集 ...

  3. Flink在流处理上常见的Source和sink操作

    flink在流处理上的source和在批处理上的source基本一致.大致有4大类 1.基于本地集合的source(Collection-based-source) 2.基于文件的source(Fil ...

  4. 2018牛客网暑假ACM多校训练赛(第十场)F Rikka with Line Graph 最短路 Floyd

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-F.html 题目传送门 - https://www.n ...

  5. kmp基础 ekmp

    +]; int lenp,lens; +];//可以是char 也可以是string +]; void getnext() { nex[]=-; ,j=; ) { ||p[j]==p[k]) nex[ ...

  6. utf-8和utf8的区别

    utf-8 和 utf8 的区别与使用: "UTF-8" 是标准写法,php 在 Windows 系统里的英文不区分大小写,所以也可以写成 "utf-8".&q ...

  7. 数据结构之二叉搜索树、AVL自平衡树

    前言 最近在帮公司校招~~ 所以来整理一些数据结构方面的知识,这些知识呢,光看一遍理解还是很浅的,看过跟动手做过一遍的同学还是很容易分辨的哟~ 一直觉得数据结构跟算法,就好比金庸小说里的<九阳神 ...

  8. QLayout: Attempting to add QLayout XXX to XXX, which already has a layout

    QLayout是Qt应用开发中一个非常重要的组件,然而平时使用的时候不小心经常会发现控制台有类似如下的警告: QLayout: Attempting to add QLayout "&quo ...

  9. linux 学习笔记 mysql安装总结

    1 安装方式 下载2禁制源码安装包 mysql-5.5.27-linux2.6-i686.tar.gz 备注:2禁制额包解压缩后直接就可以使用 不用Make 2 步骤 shell>groupad ...

  10. 使用shiro安全管理

    之前介绍了springboot使用security进行权限管理,这篇文件介绍一下springboot使用shiro进行安全管理. 简述本文的场景,本文使用springboot1.5.9+mysql+j ...