ACM Steps 2.1.8
小数化分数2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3420 Accepted Submission(s): 1258
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
Source
2007省赛集训队练习赛(2)
Recommend
lcy 思路: 小数化分数,从别人那里学来的简便方法。 有限小数: 乘以10^n/10^n,再化简,很简单。 纯无限循环小数: 例如0.(4),括号表示循环部分,分子为循环部分,分母为循环部分的数都换成9,0.(4)=4/9, 0.(abcd)=abcd/9999。; 混合无限循环小数: 例如0.32(692307),分子为有限部分连接上循环部分得到的数减去有限部分,分母为循环部分的数都换成9再连接上有限部分 的都数换成0的数,0.32(692307)=(32692307-32)/99999900。
代码:
#include<iostream>
#include<string>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
#include<iomanip>
using namespace std;
int main()
{
int t;
string s;
scanf("%d",&t);
while(t--)
{
cin>>s;
int flag=0,a=0,b=0,A=0,B=0;
int k=s.size();
for(int i=2;i<k;i++)
{
if(s[i]=='('&&i==2)
{
flag=1;
}
else if(s[i]=='('&&i!=2)
{
flag=2;
}
if(flag==0)
{
a=a*10+s[i]-'0';
A++;
}
if(flag!=0&&s[i]>='0'&&s[i]<='9')
{
b=b*10+s[i]-'0';
B++;
}
}
if(flag==0)
{
int n=a,m=pow(10,A);
A=m;
while(A%a!=0)
{
int r=A%a;
A=a;
a=r;
}
printf("%d/%d\n",n/a,m/a);
}
else if(flag==1)
{
int n=b,m=pow(10,B)-1;
B=m;
while(B%b!=0)
{
int r=B%b;
B=b;
b=r;
}
printf("%d/%d\n",n/b,m/b);
}
else if(flag==2)
{
int n=a*pow(10,B)+b-a,m=(pow(10,B)-1)*pow(10,A);
b=n;B=m;
while(B%b!=0)
{
int r=B%b;
B=b;
b=r;
}
printf("%d/%d\n",n/b,m/b);
}
}
return 0;
}
ACM Steps 2.1.8的更多相关文章
- HDOJ acm steps 3.1.1
(都是递推求值,呵呵,好开心- - ) 今天又是在自习室通宵(文明玩的停不下来了) 游戏玩完想想该水题了,于是打开了HDOJ的ACM STEPS(这是个好东西,就像他的名字,一步步来的) 2.3.x貌 ...
- hdu acm steps Big Event in HDU
上网搜了一下这道题的解法,主要有两个方法,一种是采用母函数的方法,一种是采用0/1背包的方法. 先说一下母函数,即生成函数,做个比喻,母函数就是一个多项式前面的系数的一个整体的集合,而子函数就是这个多 ...
- ACM STEPS——Chapter Two——Section One
数学题小关,做得很悲剧,有几道题要查数学书... 记下几道有价值的题吧 The area(hdoj 1071) http://acm.hdu.edu.cn/showproblem.php?pid=10 ...
- hdu ACM Steps Section 1 花式A+B 输入输出格式
acm与oi很大的一个不同就是在输入格式上.oi往往是单组数据,而acm往往是多组数据,而且题目对数据格式往往各有要求,这8道a+b(吐槽..)涉及到了大量的常用的输入输出格式.https://wen ...
- ACM Steps 2.1.7
Leftmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- ACM Steps 2.1.4
Largest prime factor Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- 2015寒假ACM训练计划
1月26号至3月4号 每天给自己一个计划.做有意义的事情,不要浪费时间. 8:00——11:30 acm训练 11:30——13:00 午休 13:00——17:30 acm训练 17:30——18 ...
- hdu 1087 动态规划之最长上升子序列
http://acm.hdu.edu.cn/showproblem.php?pid=1087 Online Judge Online Exercise Online Teaching Online C ...
- hdu 2955 01背包
http://acm.hdu.edu.cn/showproblem.php?pid=2955 如果认为:1-P是背包的容量,n是物品的个数,sum是所有物品的总价值,条件就是装入背包的物品的体积和不能 ...
随机推荐
- 【T_SQL】 基础
一.T-SQL 的组成 1.DML(数据操作语言 Data Manipulation Language) 查询.插入.删除和修改数据库中的数据.SELECT.INSERT. ...
- js倒计时(可定义截止日期)
<div id="times_wrap" class="time_num"> 距离结束时间: <div class="time_w& ...
- iOS10 UI教程层次结构的事件
iOS10 UI教程层次结构的事件 iOS10 UI教程层次结构的事件,层次结构中存在7个事件,对于这些事件的介绍如表1-3所示.通过这些事件,可以监听视图,当视图在层次结构上发生变化时可以被拦截,也 ...
- set+几何 LA 5908 Tracking RFIDs
题目传送门 题意:给一些传感器,范围在r内,再给一些询问点,问这些点能有几个传感器收到,当有墙隔绝时信号减弱,范围变小 分析:set存储传感器,用set的find来查找是否是传感器.因为询问点少,可以 ...
- Eclipse快捷键/快捷操作汇总
1.建立.切换不同的工作空间: 工作空间是放置项目的,它是项目的集合,多个工程放在一个工作空间上容易出问题,建议把不同项目存放在单独的工作 空间内,让项目代码更加有序 file → switch w ...
- 解决(空密码的root)提示修改phpmyadmin用户密码
打开 phpmyadmin数据表,点击权限 如果没有,请参考:http://jingyan.baidu.com/article/636f38bb293a9bd6b846100d.html 创建 在 ...
- Oracle错误 ORA-12560如何解决
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板, 启动oracleh ...
- iOS学习13之OC NSString类
C语言中,字符串是有char(ASC||码)字符组成. OC中,字符串是由unichar(Unicode)字符组成. 1.字符串(NSString) NSString:不可变字符串,即:创建以后,内容 ...
- CORS(跨域资源共享)简介
前言:像CORS对于现代前端这么重要的技术在国内基本上居然很少有人使用和提及,在百度或者Google上搜索CORS,搜到的中文文章基本都是另外一种卫星定位技术CORS的介绍,让我等前端同学情何以堪(对 ...
- hdu1019 Least Common Multiple
Problem Description The least common multiple (LCM) of a set of positive integers is the smallest po ...