【请求版主帮忙删帖】
本帖最后由 风行回首 于 2020-3-21 13:09 编辑#include<stdio.h>
#include<math.h>
int maxfactor(int n,int m)
{
int temp,factor,i;
if(n>m)
{
temp=n;
n=m;
m=temp;
}
factor=1;
for(i=1;i<=n;i++)
{
if(n%i==0&&m%i==0)
{
factor=i;
}
}
return factor;
}
int max(int n ,int m)
{
int c;
while(m)
{
c=n%m;
n=m;
m=c;
}
return n;
}
int main()
{
int n;
int x1,x2,y1,y2,factor;
scanf("%d",&n);
scanf("%d/%d",&x1,&y1);
n=n-1;
while(n>0)
{
scanf("%d/%d",&x2,&y2);
n--;
x1=x1*y2+x2*y1;
y1*=y2;
}
if(x1==0)
{
printf("0");
return 0;
}
if(x1<0)
{
printf("-");
x1*=-1;
}
factor=max(fabs(x1),y1);
x1/=factor;
y1/=factor;
if(x1<y1) printf("%d/%d",x1,y1);
else if(x1==y1) printf("1");
else
{
printf("%d",x1/y1);
if(x1%y1!=0) printf(" %d/%d",x1%y1,y1);
}
return 0;
} 为啥我第一个PTA可以过 第二个过不了 是有什么特殊情况没考虑到嘛?? 题目如下:
本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。
输入格式:
输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。
输出格式:
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。
输入样例1:
5
2/5 4/15 1/30 -2/60 8/3
输出样例1:
3 1/3
输入样例2:
2
4/3 2/3
输出样例2:
2
输入样例3:
3
1/3 -1/6 1/8
输出样例3:
7/24 dddd 风行回首 发表于 2019-10-10 14:15
dddd
你直接丢出一大串代码,
代码不按格式发帖也就算了,
注释也不写? bin554385863 发表于 2019-10-10 16:27
你直接丢出一大串代码,
代码不按格式发帖也就算了,
注释也不写?
{:10_266:}因为我觉得看看自定义函数部分的差别就好了就没打注释啦。。。调用第一个就没问题,第二个就有错误,但是我觉着效果都是一样的,求公约数的 bin554385863 发表于 2019-10-10 16:27
你直接丢出一大串代码,
代码不按格式发帖也就算了,
注释也不写?
sorry啦
你未考虑m或n等于0 的情况!! matrixgadener 发表于 2019-10-12 20:26
你未考虑m或n等于0 的情况!!
等于零和小于零的情况我在下面排除掉了呀 sorry啦 847666841 发表于 2019-10-12 23:49
sorry啦
??????
页:
[1]