hdu 1717 小数化分数2

来源:互联网 发布:淘宝运营视频教程 编辑:程序博客网 时间:2024/03/29 13:41
#include<stdio.h>#include<string.h>#include<stdlib.h>int zui(__int64 zi,__int64 mu){__int64 z;do{z=mu%zi;mu=zi;zi=z;}while(zi!=0);return mu;}void shu(__int64 zi,__int64 mu){__int64 a;a=zui(zi,mu);int b=zi/a;int c=mu/a;printf("%d/%d\n",b,c);}int main(){char s[30];int n;scanf("%d",&n);getchar();while(n--){scanf("%s",s);//之前这儿用gets(s)老是错,改成这样就对了,怎么回事儿?int len=strlen(s),i,f=0;for(i=2;i<len;i++)if(s[i]=='('){f=1;break;}if(f==0){int j;__int64 mu=1;for(j=1;j<=(len-2);j++)mu*=10;__int64 zi;zi=atoi(s+2);if(zi==0)printf("0\n");elseshu(zi,mu);}else {__int64 zi1,mu1;int j;s[i]='\0';zi1=atoi(s+2);mu1=1;for(j=1;j<=(i-2);j++)mu1*=10;s[i]='(';s[len-1]='\0';__int64 zi2,mu2;zi2=atoi(s+i+1);int mu21,mu22;mu21=1;for(j=1;j<=(len-4);j++)mu21*=10;mu22=mu1;mu2=mu21-mu22;zi2*=mu1;zi1*=mu2;zi1+=zi2;mu1*=mu2;if(zi1==0)printf("0\n");elseshu(zi1,mu1);}}return 0;}

原创粉丝点击