0
点赞
收藏
分享

微信扫一扫

有理数均值(特殊情况的考虑+思路分析)

猎书客er 2022-03-21 阅读 80
c++

收获:

考虑特殊情况:

符号为-

分子分母可以约分时,即y=1;(即若分母为1,则只输出分子。)

代码:

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
int n;

//LL gcd(LL a,LL b)    //对最大公因数进行查找。
//{
//	return b?gcd(b,a%b):a;
//}

int main()
{
	cin>>n;
	int m=n;
	n--;
	LL x,y,x1,y1,g;
	scanf("%lld/%lld",&x,&y);
	while(n--)
	{
		scanf("%lld/%lld",&x1,&y1);
		x = x*y1+x1*y;
		y = y*y1;
		g = __gcd(x,y);
		x = x/g;
		y = y/g;
	}
	y=y*m;   //分母*n
	g = __gcd(x,y);  //最大公约数
	int f=1;
	if((x>0 && y>0) || (x<0 && y<0)) f=0;   //符号相同
	x = fabs(x/g),y=fabs(y/g);
	if(f && x!=0) printf("-");    //符号不同且x不为0
	if(x%y==0) printf("%lld",x);    //可以整除,说明x,y均为1
	else printf("%lld/%lld\n",x,y);
	return 0;
}

题目:

举报

相关推荐

0 条评论