★题目:
★难点:要求只能以有理数和分数去输出结果。
★分析:可以对输入的数据进行通分处理,随后把结果按格式输出。
★代码:
#include
#include
#include
using namespace std;
long gy(long n,long m) //递归求最大公约数
{
long temp;
if(n
if(m==)
return n;
else
return gy(m,n%m);
}
int main()
{
long n,i,a,b,c,d,x,y,t;
cin>>n;
scanf("%ld/%ld",&a,&b);
for(int i=;i
{
scanf("%ld/%ld",&c,&d);
if(a!=) //对输入的第一个数进行分析
{
x=a*d+c*b;
y=b*d;
t=gy(abs(x),y);
a=x/t;
b=y/t;
} //实现通分操作
else
{
x=c;
y=d;
t=gy(abs(x),y);
a=x/t;
b=y/t;
} //对首位数为0的式子实现通分
}
if(abs(a)>b&&a%b!=)
{
cout<
}
else if(a%b==) //包含a==0的情况
{
cout<