hdoj--1717

来源:互联网 发布:免费的php空间 编辑:程序博客网 时间:2024/04/29 10:29
题目地址:<a target=_blank href="http://acm.hdu.edu.cn/showproblem.php?pid=1717">http://acm.hdu.edu.cn/showproblem.php?pid=1717</a>
#include<stdio.h>#include<math.h>#include<string.h>char str[20];int gcd(int m,int n){return n==0 ? m:gcd(n,m%n);}int main(){int t,i,j,k,ans,len,cnt,num,len_r;scanf("%d",&t);while(t--){scanf("%s",str);len=strlen(str);if(!strchr(str,'('))  //没有循环节的情况 {cnt=0;num=1;for(i=len-1;i>1;i--)cnt+=(str[i]-'0')*pow(10.0,(len-i-1)*1.0); //  分子for(i=2;i<len;i++)num*=10;        //分母 int res=gcd(num,cnt);num/=res;cnt/=res; printf("%d/%d\n",cnt,num);}else  //有循环节 {for(i=2;i<len;i++){if(str[i]=='('){j=i-2;k=i;}if(str[i]==')'){len_r=i-k-1;}}cnt=0;num=0;for(i=k+1;i<=len-2;i++){cnt=cnt*10+(str[i]-'0');  //分子 num=num*10+9;         //分母 }int inter=0;for(i=k-1;i>1;i--)inter+=(str[i]-'0')*pow(10.0,(k-i-1)*1.0);  //求 不循环的部分 int res=gcd(cnt,num);num/=res;cnt/=res;cnt+=(inter*num);for(i=0;i<j;i++)num*=10;res=gcd(cnt,num);num/=res;cnt/=res;printf("%d/%d\n",cnt,num);}}return 0;}

1 0
原创粉丝点击