【高精度】高精度分数[c++]
【高精度】高精度分数
时间限制: 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++]的更多相关文章
- 【推导】【贪心】【高精度】Gym - 101194E - Bet
题意:每个队伍有个赔率pi,如果你往他身上押x元,它赢了,那么你得到x+(1/pi)x元,否则你一分都得不到.问你最多选几支队伍去押,使得存在一种押的方案,不论你押的那几支队伍谁赢,你都能赚得到钱. ...
- 【高精度练习+卡特兰数】【Uva1133】Buy the Ticket
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- 高精度运算略解 在struct中重载运算符
高精度 高精度,即高精度算法,属于处理大数字的数学计算方法.在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字. 重载运算符 运算符重载,就是对已有的运算符重新进行 ...
- 算法模板 - C++ 高精度运算
C++算法板子 高精度 高精度推荐用python来写,python有大整数,这里写的是关于C++的高精度运算模板 1.高精 * 低精 #include <iostream> #includ ...
- ACM基础板子
新生赛以后就正式成为一名acmer啦 ~虽然没有打过比赛呜呜呜 要好好学算法,拿一个牌牌嘛~ 这里就记录算法学习情况,也怕自己偷懒,学一个就记录,看看长时间拖更就是在摸鱼,摸鱼和鸽子都是本质 ,加油! ...
- 二模 (12) day1
第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码 ...
- C#装箱,拆箱和强制转换(转)
出处:https://www.cnblogs.com/fengjiulin110120/p/6605739.html 关系: 强制转换就包含有装箱拆箱操作,装箱就是把值类型转换成引用类型,反之就是拆箱 ...
- AcWing算法基础1.4
高精度 高精度加法,高精度减法,高精度乘低精度,高精度除以低精度,大概平时用的最多的就是这四个,模板有两种(因为我现在不太会用vector,就用数组也写了个,23333) 高精度运算和人工手算差不多, ...
- 秘制CSP模板
不定期更细中...... 声明1:由于js的问题导致VIEW CODE按钮只能点"I"附近才能展开代码 声明2:为了排版的美观,所有的解释以及需要留意的地方我都放在代码中了 声明3 ...
随机推荐
- LeetCode高频148错题记录
3. Max Points on a Line 共线点个数3种解法 思路一:思考如何确定一条直线,两点法,确定斜率后带入一点.有三种情况,1. 两点重合,2. 斜率不存在,3. 正常算,依次以每个点为 ...
- ajax一次获取整个表单的数据
$.ajax({ cache: true, type: "POST", url:ajaxCallUrl, data:$('#yourformid').serialize(),// ...
- 3步实现ssh面密码登录
1.上次本机的公钥和私钥 [root@vicweb ~]#ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in ...
- ReactNative调试技术-真机调试
在我开始用ReactNative开始开发APP时,为了能够获取程序运行中的信息,就需要搭建调试环境. 手机调试方式有两类,一类是模拟器方式,另一类是真机模式. 我测试了一下相应的模拟器: 如果用谷歌管 ...
- [转]Howto: 使用ImageBrush替换PictureMarkerSymbol以加强graphic显示性能
原文地址:http://support.esrichina-bj.cn/2009/0728/1007.html 文章编号 : 37033 软件: ArcGIS API for Microsoft Si ...
- JDK5的新特性之增强for循环遍历数组或集合
[格式] for(元素的类型 变量名 : 数组或Collection集合名){ //此处使用变量名即可,该变量就是普通for里的i. }
- P1118 [USACO06FEB]数字三角形`Backward Digit Su`… 回溯法
有这么一个游戏: 写出一个11至NN的排列a_iai,然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少11,直到只剩下一个数字位置.下面是一 ...
- 043 hive数据同步到mysql
一:意义 1.意义 如果可以实现这个功能,就可以使用spark代替sqoop,功能程序就实现这个功能. 二:hive操作 1.准备数据 启动hive 否则报错,因为在hive与spark集成的时候,配 ...
- 正则表达式在python中的简单使用
正则表达式独立与编程语言,基本上所有的编程语言都实现了正则表达式的相关操作.在Python中正则表达式的表现为re模块: import re 其操作有三个方法: my_string = "h ...
- ftp服务器搭建流程详解
随着项目的运行,项目的体积越来越庞大,于是将文件(这里包括所有上传的附件信息等)放在项目中已经显得很臃肿,项目运行的速度会越来越慢,逐步制约了项目的用户体验,为解决这一问题我们可以将项目剥离开来,让多 ...