HDU 1717 小数化分数2
2014-06-22 20:40
288 查看
小数化分数2
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3176 Accepted Submission(s): 1293
Problem Description
Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
Input
第一行是一个整数N,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
Output
对每一个对应的小数化成最简分数后输出,占一行。
Sample Input
Sample Output
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1717
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3176 Accepted Submission(s): 1293
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
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1717
/*
1717 小数化分数2
编程之美上有公式推导
有限 x=0.a1a2a3...an ==> a1a2..an/10^n
无限 x=0.a1a2..an(b1b2..bm) ==> [(a1a2..an)(10^m-1)+(b1b2...bm) ]/(10^m-1)*10^n
3 0.(4) 0.5 0.32(692307)
*/
#include<iostream>
#include<cstring>
using namespace std;
int gys(int m,int n)//n大 m小
{
int t;//n是底 大些
while(m>0)
{
t=n%m;
n=m;
m=t;
}
return n;
}
int main()
{
int n,z1,z2,z,p,q,x,y,len,t,i,temp1,temp;
char a[14];
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
len=strlen(a);
t=0;//有无括号
p=0;x=0;//前面an的
q=0;y=0;//bn的
for(i=2;i<len;i++)
{
if(!t&&a[i]!='(')
{
p++;x=x*10;x+=a[i]-'0';
}
if(t&&a[i]!=')')
{
q++;y=y*10;y+=a[i]-'0';
}
if(a[i]=='(')
t=1;
}
if(!q)//有限循环
{
temp=1;//10^p 程序的10^p 是异或。
for(i=0;i<p;i++)
temp*=10;
z=gys(x,temp);
printf("%d/%d\n",x/z,temp/z);
}
else
{
temp=1;//10^p
for(i=0;i<p;i++)
temp*=10;
temp1=1;//10^q
for(i=0;i<q;i++)
temp1*=10;
z1=x*(temp1-1)+y;
z2=(temp1-1)*(temp);
z=gys(z1,z2);
printf("%d/%d\n",z1/z,z2/z);
}
}
return 0;
}
相关文章推荐
- hdu 1717 小数化分数2 (数论)
- HDU - 1717 小数化分数2
- hdu 1717 小数化分数2 (循环小数转分数)
- HDU 小数化分数 1717
- hdu 1717 --小数化分数2
- HDU 1717 小数化分数2
- HDU 1717 小数化分数2(循环小数化分数)
- HDU 1717 小数化分数2【数学】
- hdu 1717 小数化分数2
- hdu 1717 --小数化分数2
- hdu 1717 小数化分数2
- HDU 1717 小数化分数2(数学)
- hdu 1717 小数化分数2
- HDU-1717 小数化分数2
- Hdu 1717 小数化分数2
- HDU-#1717 小数化分数2(巧妙的推导式)
- hdu 1717 小数化分数2 (数学)
- HDU 1717 小数化分数2 数学题
- HDU 1717 小数化分数
- hdu 1717 小数化分数2