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