您的位置:首页 > 其它

hdu 1717 小数转换为分数

2011-09-05 19:59 561 查看
(1)纯循环小数(仅指整数部分为0的)化成分数时,分数的分母由9组成,9的个数等于一个循环节的位数,分子是由一个循环节的各位数字组成。
如:0,234234234....=234/999
0.111111=1/9

(2)非纯循环小数化成分数时,分母由9和0组成,其中9的个数等于一个循环节的位数,0的个数等于非循环部分的位数。分子是从小数点后的第一位到第一个循环节的末位组成的数减去非循环部分。
如:0,76345345345。。。。=(76345-76)/99900
0.0243434343.........=(243-2)/9900
0.811111。。。。=(81-8)/90=73/90

#include<iostream>
#include<string>
using namespace std;
char s[20];
int hcf(int a,int b)
{
int r=0;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return(a);
}
int main()
{
int n,a,b;
scanf("%d",&n);
while(n--)
{
int len;
scanf("%s",s);
len=strlen(s);
a=b=0;
int count=1,c=0;
int i=2;
while(i<len&&s[i]!='(')
{
a=a*10+(s[i]-'0');
i++;
count=count*10;
}
i++;
b=a;
while(i<len&&s[i]!=')')
{
b=b*10+(s[i]-'0');
c=c*10+9;
i++;
}
if(a==b) {
int f=hcf(a,count);
printf("%d/%d\n",a/f,count/f);
}
else {
int f=hcf(b-a,c*count);
printf("%d/%d\n",(b-a)/f,c*count/f);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: