HDU 1717 小数化分数2(数学)

来源:互联网 发布:伪随机算法有规律 编辑:程序博客网 时间:2024/04/20 13:41

小数化分数2

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)


Problem Description
Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
 

Input
第一行是一个整数N,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
 

Output
对每一个对应的小数化成最简分数后输出,占一行。
 

Sample Input
30.(4)0.50.32(692307)
 

Sample Output
4/91/217/52
 

Source
2007省赛集训队练习赛(2)
 
/************************************************************************/

该题为中文题,而且题目讲得很直白,无非就是让我们将无限循环小数或有限小数转化成分数,故题意不再多讲

至于如何做到小数与分数地转化呢,不妨稍微来学习一下

首先无限循环小数0.333…可以表示成


它的分数形式是1/3,这个想必大家都是清楚的,那是如何转化的呢?

②-①,可得


再举一个例子,说不定你就会有所发现

比如无限循环小数0.131313…,按照上述方式,可以得到


若不再是纯小数的话,我们要怎么办呢

比如说无线循环小数0.2777777…,分为不循环部分0.2与循环部分0.077777…

这样的话我们只需做点处理就可以


具体的可以去看看循环小数化分数的一些数学知识,留下链接以供学习

#pragma comment(linker, "/STACK:1024000000,1024000000")#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<math.h>#include<vector>#include<map>#include<set>#include<stdlib.h>#include<cmath>#include<string>#include<algorithm>#include<iostream>#define exp 1e-10using namespace std;const int N = 20;const int inf = 1000000000;const int mod = 1000000007;int gcd(int x,int y){    while(x!=y)        if(x>y)            x-=y;        else            y-=x;    return x;}char s[N];int main(){    int t,i,a,b,c,d;    bool flag;    scanf("%d",&t);    while(t--)    {        flag=false;b=a=c=0,d=1;        scanf("%s",s);        for(i=2;s[i]!='\0';i++)            if(s[i]=='(')               flag=true;            else if(flag&&s[i]!=')')            {                a=a*10+s[i]-'0';                b=b*10+9;            }            else if(!flag)            {                c=c*10+s[i]-'0';                d*=10;            }        if(!a)        {            i=gcd(c,d);            printf("%d/%d\n",c/i,d/i);        }        else        {            c=a+c*b;            d=d*b;            i=gcd(c,d);            printf("%d/%d\n",c/i,d/i);        }    }    return 0;}
菜鸟成长记


0 0
原创粉丝点击