7-79 N个数求和 (20分)


7-79 N个数求和 (20分)
 

本题的要求很简单,就是求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



完全模拟,看着复杂 其实和我们算异分母分数的过程是一样的
#include<stdio.h>
int gcd(int m,int n)
{
 int r;
 r=m%n;
 while(r!=0)
 {
  m=n;
  n=r;
  r=m%n;
  
 }
 return n;
 
}
int main()
{
 int count;
 int m,n,a,b;
 int g;
 int zheng;
 scanf("%d",&count);
 int i;
 int gongbei;
 scanf("%d/%d",&m,&n);
 g=gcd(m,n);
 m/=g;
 n/=g;
 for(i=2;i<=count;i++)
 {
  scanf("%d/%d",&a,&b);
  g=gcd(a,b);
  a/=g;
  b/=g;
  g=gcd(n,b);
  gongbei=n*b/g;
  m=gongbei/n*m+gongbei/b*a;
  n=gongbei;
  g=gcd(m,n);
  m/=g;
  n/=g;
  
  
  
 }
 zheng=m/n;
 m=m-zheng*n;
 if(zheng==0&&m!=0)
 printf("%d/%d\n",m,n);
 else
 if(m==0)
 printf("%d\n",zheng);
 else
 printf("%d %d/%d\n",zheng,m,n);
 return 0;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM