自己做的时候都不慢
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,as[15],bs[15],cs[15],al,bl,cl,n=0;long long fz,fm,yf;char ac,bc,cc;
long long zhe(long long[],long long);
long long po(long long,long long);
long long gcd(long long,long long);
int main()
{
for(;;)
{
ac=getchar();
if(ac=='.') break;
if(ac=='\n')
{
n=1;
break;
}
al++;
as[al]=ac-'0';
}
a=zhe(as,al);
while(n<1)
{
bc=getchar();
if(bc=='(') break;
if(bc=='\n')
{
n=1;
break;
}
bl++;
bs[bl]=bc-'0';
}
b=zhe(bs,bl);
while(n<1)
{
cc=getchar();
if(cc==')') break;
cl++;
cs[cl]=cc-'0';
}
c=zhe(cs,cl);
if(cl==0&&bl==0)
{
cout<<a<<"/"<<1;
return 0;
}
if(cl==0)
{
fm=po(10,bl);
fz=a*po(10,bl)+b;
}
if(bl==0)
{
fm=po(10,cl)-1;
fz=a*(po(10,cl)-1)+c;
}
if(cl!=0&&bl!=0)
{
fm=po(10,cl+bl)-po(10,bl);
fz=a*(po(10,cl+bl)-po(10,bl))+c+b*po(10,cl)-b;
}
yf=gcd(fz,fm);
cout<<fz/yf<<"/"<<fm/yf;
return 0;
}
long long zhe(long long a1[],long long a2)
{
long long a3=0,a4=1;
for(long long a5=a2;a5>=1;a5--)
{
a3+=a4*a1[a5];
a4*=10;
}
return a3;
}
long long po(long long b1,long long b2)
{
long long b3=1;
for(long long b4=1;b4<=b2;b4++)
{
b3*=b1;
}
return b3;
}
long long gcd(long long c1,long long c2)
{
return c2==0?c1:gcd(c2,c1%c2);
}