TLE求助
查看原帖
TLE求助
508032
int08楼主2021/5/31 10:42

自己做的时候都不慢

#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);
}
2021/5/31 10:42
加载中...