博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1717 小数化分数2
阅读量:6373 次
发布时间:2019-06-23

本文共 1177 字,大约阅读时间需要 3 分钟。

小数化分数2

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4639    Accepted Submission(s): 1895


Problem Description
Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
 

Input
第一行是一个整数N,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
 

Output
对每一个对应的小数化成最简分数后输出,占一行。
 

Sample Input
 
3 0.(4) 0.5 0.32(692307)
 

Sample Output
 
4/9 1/2 17/52

题意;将小数化成分数,小数包括普通小数(有限小数)和无线循环小数。

题解:普通小数,很简单,肯定能乘以一个10^k后变为整数,即小数a*10^k=b(b为整数),所以a=b*10^k/10^k。通分下就OK了。再是无线循环小数,拿样例中的a=0.32(692307)来说明方法,a*10^6=326923.07(692307)-->

a*10^6-a=(10^6-1)*a=326923.07-0.32-->

(100^6-1)*100*a=32692307-32-->

a=(32692307-32)/(10^8-100);通分下结果就出来了,这个方法就是化去无线循环部分,使它变为普通小数。

#include 
#include
#include
#include
#include
using namespace std;char a[20];int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int main(){ int T; cin>>T; while(T--) { int i,j,k,n,p,q,d; cin>>a; n=strlen(a); for(i=2;i
=n) { p=0,q=1; for(i=2;i

转载于:https://www.cnblogs.com/junior19/p/6730112.html

你可能感兴趣的文章
关于Map集合的遍历总结
查看>>
【计数】【UVA11401】 Triangle Counting
查看>>
Django建站纪要(一)——做个blog
查看>>
(实现)vue.js最简实现
查看>>
RabbitMQ发送消息成功,但是接受不到消息
查看>>
nova-network创建初始化网络
查看>>
虎符遥控器(PPT遥控翻页)
查看>>
Java常用缩略词
查看>>
Java构造块,静态代码块,构造方法执行顺序
查看>>
3D打印开源切片软件Cura配置步骤
查看>>
c++读取TXT文件内容
查看>>
EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...
查看>>
[android] ndk环境的搭建
查看>>
Kafka集群搭建
查看>>
js表达式
查看>>
oracle的日期相减
查看>>
半正定矩阵
查看>>
C语言面试基本问题
查看>>
这不是一篇随笔
查看>>
vc写csv文件
查看>>