Java化小数为分数_杭电oj1717——小数化分数(java实现)
packagehduoj;importjava.util.Scanner;/*** 这道题没有整数部分,也就是说数组直接从a[2]开始后面是小数,我把这道题分为了三类:
*
* ①普通有限小数
*
* ②纯循环小数
*
* ③混循环小数
*
* 下面就挨个说它的转化方法:
*
* ①这一类很简单,分子就是小数点后面的数,分母就是10的n次方(n为小数点后面位数)
*
* ②这个小学学奥数的时候老师讲过,也不是很难:分子是循环的数,分母就是和它位数相同的9,比如0.(14),那么就是14/99
*
* ③这个就比上面的多了一步,我也是查了百度百科才知道的。下面就直接用百度百科的例子说明吧,仔细看看就发现方法了:
*
* 0.0105˙717˙=(105717-105)/9990000=105612/9990000=8801/832500
*
* 0.0˙869˙=869/9990,0.00˙716˙=716/99900=179/24975
*
* 0.368˙616˙=(368616-368)/999000=368248/999000=46031/124875
*
* 观察一下,就是小数部分减去不循环部分作为分母,分母就是循环部分个9和非循环部分个0组成,也许这么说很迷,还是看上面例子吧。
**/
public classhdoj_1717_小数转换成分数 {static int gcd(int a,intb){if(b==0)returna;return gcd(b,a%b);
}static void print(int a,intb){int gcd =gcd(a,b);
System.out.println(a/gcd+"/"+b/gcd);
}public static voidmain(String[] args) {
Scanner sc= newScanner(System.in);int count =Integer.parseInt(sc.next());while(count--!=0){
String data=sc.next();if(data.contains("(")){//说明是循环小数
String temp = data.substring(data.indexOf('(')+1,data.indexOf(')'));if(data.indexOf("(")==2){//说明是纯循环小数
int len =temp.length();int numerator =Integer.parseInt(temp);
StringBuilder de_str= newStringBuilder();while(len--!=0){
de_str.append(9);
}int denominator =Integer.parseInt(de_str.toString());
print(numerator,denominator);
}else{//说明是混循环小数
String before_the_brc = data.substring(data.indexOf('.')+1,data.indexOf('('));
String temp_in= before_the_brc+temp;int numerator = Integer.parseInt(temp_in)-Integer.parseInt(before_the_brc);int la_len =temp.length();int be_len =before_the_brc.length();
StringBuilder de_str= newStringBuilder();while(la_len--!=0){
de_str.append(9);
}
print(numerator,Integer.parseInt(de_str.toString())*(int)Math.pow(10,be_len));
}
}else{//说明是普通小数
String temp = data.substring(data.indexOf('.')+1);int pow =temp.length();int numerator =Integer.parseInt(temp);int denominator = (int)Math.pow(10,pow);
print(numerator,denominator);
}
}
}
}
Java化小数为分数_杭电oj1717——小数化分数(java实现)相关推荐
- java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题
在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...
- 杭电1430康托 bfs(java)
魔板: Problem Description 在魔方风靡全球之后不久,Rubik先生发明了它的简化版--魔板.魔板由8个同样大小的方块组成,每个方块颜色均不相同,可用数字1-8分别表示.任一时刻魔板 ...
- c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解
一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...
- c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解
一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...
- 杭电acm1004java答案_杭电acm1004源码
杭电acm1004源码 专业人士进来 Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- java思维导图源代码_如何使用思维导图解读java开源项目
思维导图与java 思维导图是个很神奇的工具,它具有结构化.可视化.更接近人类大脑认知的特点. 我们在阅读项目的时候往往是无头无脑的随便看源码,其实这是种错误的学习的方法.学习得多注重积累,有输入就要 ...
- java byte char io流_一文带你看懂JAVA IO流,史上最全面的IO教学
原标题:一文带你看懂JAVA IO流,史上最全面的IO教学 一.IO流是什么 惯例引用百科的回答 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符 ...
- java io流详解_一文带你看懂JAVA IO流,史上最全面的IO教学啦
一.IO流是什么 惯例引用百科的回答流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数据的操作 ...
- python怎么输入分数_在python中怎么表示分数
在python中怎么表示分数 发布时间:2020-07-10 17:07:46 来源:亿速云 阅读:180 今天就跟大家聊聊有关在python中怎么表示分数,可能很多人都不太了解,为了让大家更加了解, ...
最新文章
- PCL:求两条直线交点
- 大数据分布式集群搭建(5)
- 两分钟用C#搭建IE BHO勾子, 窃取密码
- html div box,html – 为转换后的div添加box-shadow
- php页面转发,php如何实现页面路由转发
- mysql系列_Mysql系列(三)—— Mysql字符集和比较规则
- win7系统临时文件夹的打开方法
- 经纬度转小数格式 java_怎么把经纬度转成小数
- RouterOS 端口映射
- Google Code 中使用svn工具说明
- [渝粤教育] 西南科技大学 语言学概论(英语) 在线考试复习资料
- 由pushViewController说起可能出线的各种死法
- U盘系统、格式化等问题的解决办法
- 程序员七夕特刊,绝无狗粮添加剂
- wine 安装(ubuntu中安装windows下软件)
- 利用积分区域的对称性计算重积分
- 远程服务器怎么能显示电脑u盘,怎样在远程服务器上看到u盘
- JER与JDK区别以及JDK的安装配置(2021-06-13 Win10)
- 华为RIM设备短路故障
- 荣耀搭载鸿蒙计划,荣耀V40照常发布,将更换操作系统,同nova8搭载鸿蒙2.0发布...
热门文章
- 有n个人围成一圈 顺序排号 java_java有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出...
- NandFlash基础知识-K9F2G08
- 数据库性能调优架构师所需的skillset
- 电脑加载,电脑加载慢又卡怎么办
- IT运维的相关需求分析报告(第一篇)
- 《计算机体系结构量化研究方法》1.8 性能的测量、报告和汇总
- SDUST 第二次实验
- 完整简洁的Oracle获得汉字字符串拼音首字母和全拼的函数
- dhcp服务器修改dns设置方法,dhcp服务器的dns设置方法
- python向自己qq邮件发信息_python实现自动向QQ邮箱发送天气预报邮件