首页 技术 正文
技术 2022年11月10日
0 收藏 467 点赞 4,832 浏览 1432 个字

小数化分数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;

}

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905