今天学习了把分数化为循环小数,下面代码实现的功能是:输入m/n,如果m能被n整除,则直接输出商;否则,输出商以后再输出循环节。

#include<cstdio>
#include<cstring>
const int MAXN = 100005;
int a[MAXN], vis[MAXN];
int main()
{int n, t, i, m;scanf("%d",&t);while(t--){memset(vis, 0, sizeof(vis));scanf("%d/%d",&m,&n);if(m > 0 && n < 0){printf("-");n = -n;}else if(m < 0 && n > 0){printf("-");m = -m;}if(m % n == 0){printf("%d\n",m/n);continue;}else{if(m > n){printf("%d.",m/n);m = m % n;}elseprintf("0.");}int s = m, num = 0;vis[s] = 1;while(1){s *= 10;a[num++] = s / n;s %= n;if(vis[s] || s == 0) break;  //余数再次出现或者余数为0(即可以整除)vis[s] = 1;}for(i = 0; i < num; i++)printf("%d", a[i]);printf("\n");}return 0;
}
// 求a/b
// 若能整除或者为有限小数,则直接输出商
// 若不能整除,则输出包含一个循环节的商,其中循环节用()括起来
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int a, b;while(cin >> a >> b) {if(a % b == 0) { // 可以整除cout << a / b << endl;continue;}vector<int> quotient; // 商vector<int> remainder; // 余数quotient.push_back(a / b);remainder.push_back(a % b);int index = 0;int flag = 0;int start_pos, end_pos;while(1) {++index;quotient.push_back(remainder[index - 1] * 10 / b);int current_remainder = remainder[index - 1] * 10 % b;if(current_remainder == 0) { // 有限小数flag = 1;break;}else { // 无限循环小数vector<int>::iterator it = find(remainder.begin(), remainder.end(), current_remainder);if(it != remainder.end()) { // 出现相同的余数,即第二次出现循环节start_pos = it - remainder.begin() + 1;end_pos = index; remainder.push_back(current_remainder);break;}elseremainder.push_back(current_remainder);}}cout << quotient[0] << ".";if(flag) {for(int i = 1; i <= index; ++i)cout << quotient[i];cout << endl;}else {for(int i = 1; i < start_pos; ++i)cout << quotient[i];cout << "(";for(int i = start_pos; i <= index; ++i)cout << quotient[i];cout << ")" << endl;cout << "start_pos = " << start_pos << endl;cout << "end_pos = " << end_pos << endl;cout << "length = " << end_pos - start_pos + 1 << endl;}}return 0;
}

把循环小数化为分数的方法:对于纯循环小数(从小数点后第1位开始循环)x,假设循环节为R,它包括l个数字,则有10^l*x - x = R,因此x = R/(10^l - 1)。

例如,若x = 0.123 123 123…,则R = 123, l = 3, 因此x = 123/999 = 41/333。

把 分数化为循环小数 和 把循环小数化为分数 的方法相关推荐

  1. 分数化小数计算机在线,循环小数化分数计算器

    一.纯循环小数化分数 从小数点后面第一位就循环的小数叫做纯循环小数.怎样把它化为分数呢?看下面例题. 把纯循环小数化分数: 纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各 ...

  2. 小数化分数的口诀表_循环小数化分数口诀

    循环小数化分数口诀2019-11-25 14:23:32文/颜雨 循环小数化分数口诀:将纯循环小数改写成分数,分子是一个循环节的数字组成的数;分母各位数字都是9,9的个数与循环节中的数字的个数相同. ...

  3. [置顶] AMF序列化为对象和AMF序列化为二进制字节流

    在使用Flex作为页面前端驱动Socket通讯时,一般使用AMF格式来进行的发送和接收,因此就要涉及到不同的数据格式的转换. 下面提供了AMF序列化为对象和AMF序列化为二进制字节流的方法,代码如下: ...

  4. Java系列之:ObjectMapper实现对象转化为Json、集合转化为Json、Json转化为对象、Json转化为JsonNode、JsonNode转化为Json字符串

    Java系列之:ObjectMapper实现对象转化为Json.集合转化为Json.Json转化为对象.Json转化为JsonNode.JsonNode转化为Json字符串 一.创建类Dataset ...

  5. 小数点化分数的过程_小数怎么化成分数

    0分 0 40.0KB 2017-10-22 小数化成分数.doc[自研课] 旧 知 链 接 新 知 自 研 [自研课本情景图和内容,初步了解小数化分数的1.0.1表示( )分之( ); 2.0.3表 ...

  6. 小数点化分数的过程_小数怎样换算成分数(小数分数转换器)

    1)纯小数换算成分数的方法:去掉小数点前的0,将小数作分子,将10?作分母.其中,n为小数的位数.如0.0117=117/100002)带小数换算成分数的方法:带小数是整. 分子为小数点后的数字,分母 ...

  7. 两个分数化简比怎么化_分数如何化成最简分数

    Q1:百分之3化成最简分数是多? 百分之3化成最简分数是3/100 Q2:怎样将分数化成最简分数? 例如十分之五化成最简分数是二分之一.(有什么规律吗?) 分子分母同时除以他们的最大公约数 Q3:分数 ...

  8. 小数乘分数怎么算过程_小数乘以分数公开课教学设计

    如何让学生在现实情景中体会和理解数学理念,丰富练习形式,加强计算与实际的应用联系,培养学生应用数学的意识和能力呢,以下是小编整理的<小数乘以分数公开课教学设计>,供您阅读,参考.希望对您有 ...

  9. 请把学生名与考试分数录入到Map中,并按分数显示前三名成绩学员的名字

    请把学生名与考试分数录入到Map中,并按分数显示前三名成绩学员的名字. public class MapTest {@SuppressWarnings("unchecked")@T ...

  10. python怎么输入分数_在python中怎么表示分数

    在python中怎么表示分数 发布时间:2020-07-10 17:07:46 来源:亿速云 阅读:180 今天就跟大家聊聊有关在python中怎么表示分数,可能很多人都不太了解,为了让大家更加了解, ...

最新文章

  1. 微软正式发布Azure Storage上的静态网站
  2. Java及Android开发环境搭建
  3. if something reaches the top
  4. Spark实战系列目录
  5. Ayoub's function CodeForces - 1301C(组合数学)
  6. 疫情期间,在家使用java的SSH框架实现一个简单的任务调度系统
  7. PHP教程 数据库和MySQL_PHP教程 - MySQL 创建数据库和表
  8. 近期在做或要做的实验
  9. Identity Server 4 原理和实战(完结)_建立Angular 客户端
  10. 【转】keil5 missing close quote 错误解决
  11. 深圳数据分析认证(CPDA)含金量怎么样?
  12. 微信小程序实现控制标题栏背景色
  13. servlet3 文件上传
  14. model 和WEB前台页面提交完美自动填充
  15. 交通期刊JCR(2020)
  16. 103.107.189.XXX机房服务器linux和windows系统的区别:
  17. 科技创新创业2022年阜阳市高新企业扶持奖补政策新出申报条件材料流程
  18. c++ bitset 基本用法
  19. 介绍自己过去现在和未来_过去,现在和未来
  20. php伪协议实现命令执行,任意文件读取

热门文章

  1. Java虚拟机运行流程
  2. 26期20180703 正则 grep
  3. C# winfrom 通过代码 删除TableLayoutPanel控件的一行或列
  4. 深入理解ES6--1.块级绑定
  5. push an existing repository from the command line
  6. 百度搜索,你画了好大一张饼,你还打算欺骗多少人呢?有图为证
  7. H3C交换机典型访问控制列表(ACL)配置实例
  8. Innovation Factory Open Day
  9. C# MemoryStream先写后读的奇怪现象
  10. CentOS搭建FTP