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
如: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; }
相关文章推荐
- HDU-1717 小数转换成分数 运用GCD
- hdu 1717 小数化分数2 (循环小数转分数)
- hdu 1717小数化分数2
- hdu 1717小数化分数2
- hdu 1717小数化分数2
- hdu---1717小数化分数2
- hdu 1717 小数化分数2 循环小数,算数论题吧. 不是很难.
- HDU 2522 & AOJ 441 & AOJ 364 关于小数和分数的转换
- 【循环小数性质】HDU 1717——小数化分数2
- hdu 1717 && 计蒜课 52 【分数小数的互相转化】【数论?】
- hdu 1717 --小数化分数2
- HDU 2.1.8 小数化分数2
- [Python]分数小数互相转换
- hdu 1717 小数化分数2 (数学)
- hdu 1717 小数化分数2
- HDU 2.1.8 小数化分数2
- 分数与小数的相互转换
- 怎样将无限循环小数转换为分数
- hdu 1717 小数化分数2 (数论)
- hdu 1717 小数化分数2(数学)