为什么其他测试点答案都是正确的,测试点2的结果要不就是浮点错误要不就是答案错误
一直都是这样,一直过不了,枯了
代码:
#include <stdio.h>
//寻找两个数的最大公因数
int Cf(int a,int b)
{
int r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
return b;
}
//寻找两个数的最小公倍数
int Cb(int a,int b)
{
int m;
for(int i=a;i<=a*b;i++)
{
if(i%a==0 && i%b==0)
{
m=i;
break;
}
}
return m;
}
//两个分数进行相加
int Add(int a1,int b1,int a2,int b2)
{
int fz;
int gb=Cb(b1,b2);
fz=gb/b1*a1+gb/b2*a2;
return fz;
}
int main()
{
int N;
scanf("%d",&N);
int a[N],b[N];
int i=0;
int S=N;
while(S>0)
{
scanf("%d/%d",&a[i],&b[i]);
i++;
S--;
}
int fm;
int fz=0;
int yf;
for(int i=0;i<N-1;i++)
{
fz=Add(a[i],b[i],a[i+1],b[i+1]);
a[i+1]=fz;
b[i+1]=Cb(b[i],b[i+1]);//求这两个数的最小公倍数
//将两个分数相加得到的分数进行约分
yf=Cf(a[i+1],b[i+1]);
a[i+1]/=yf;
b[i+1]/=yf;
fm=b[i+1];
fz=a[i+1];
}
fm*=N;
int cf=Cf(fz,fm);
if(cf!=0)
{
fz/=cf;
fm/=cf;
if(fz%fm==0) printf("%d\n",fz/fm);
else printf("%d/%d\n",fz,fm);
}
return 0;
}