基礎程式設計題(PTA) 7-35 有理數均值 (20分)
7-35 有理數均值 (20分)
- 基礎程式設計題
題目:
本題要求編寫程式,計算N個有理數的平均值。
輸入格式:
輸入第一行給出正整數N(≤100);第二行中按照a1/b1 a2/b2 …
的格式給出N個分數形式的有理數,其中分子和分母全是整形範圍內的整數;如果是負數,則負號一定出現在最前面。
輸出格式:
在一行中按照a/b
的格式輸出N個有理數的平均值。注意必須是該有理數的最簡分數形式,若分母為1,則只輸出分子。
輸入樣例1:
4
1/2 1/6 3/6 -5/10
輸出樣例1:
1/6
輸入樣例2:
2
4/3 2/3
輸出樣例2:
1
思路
- 最開始的想法是a[],b[]陣列存輸入的分子分母,dr存所有分母直接的乘積,nr存所有分子直接的通分.最後找最大公約數.但是當n很大的時候int可能會溢位
- 改進,每次讀入a,b,算出它們的通分,並且約分
#include<iostream>
#include<stdio.h>
#include<set>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
#include<string.h>
#include<stack>
#include<sstream>
using namespace std;
#define inf 0x3f3f3f3f
typedef long long ll;
int n,a,b,nr=0,dr=1,temp;
int gcd(int x,int y)
{
if(y) return gcd(y,x%y);
else return x;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
scanf("%d/%d",&a,&b);
nr*=b;
nr+=a*dr;
dr*=b;
if(i==n-1) dr*=n;
temp=gcd(nr,dr);
nr/=temp;
dr/=temp;
}
if(nr==0) printf("0");
else if(dr==1) printf("%d",nr);
else printf("%d/%d",nr,dr);
return 0;
}
相關文章
- 基礎程式設計題(PTA) 7-26 單詞長度 (15分)程式設計
- C++有理數類設計C++
- PTA基礎程式設計題目集 6-11 求自定型別元素序列的中位數 (25分)程式設計型別
- JavaSE基礎程式設計十題Java程式設計
- PTA 程式設計 判斷題-期末複習程式設計
- 《java程式設計基礎》例題5.6Java程式設計
- PyTorch基礎——均值、(無偏估計)方差PyTorch
- PTA - C程式設計 NoC - 指標 (11道題)C程式程式設計指標
- C++程式設計基礎(2)變數C++程式設計變數
- Socket程式設計基礎程式設計
- Go程式設計基礎Go程式設計
- Shell程式設計-基礎程式設計
- python程式設計基礎Python程式設計
- shell程式設計基礎程式設計
- Java 基礎02Java程式設計基礎Java程式設計
- Windows程式設計系列:圖形程式設計基礎Windows程式設計
- 【socket程式設計基礎模板】程式設計
- QML程式設計 基礎 小白程式設計
- 【程式設計基礎】輸出程式設計
- 程式設計基礎知識程式設計
- 網路程式設計基礎程式設計
- python 程式設計基礎案例Python程式設計
- shell程式設計基礎二程式設計
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 7-8 使用一維陣列求平均值 (20分)_PTA_Java基礎練習陣列Java
- 《Linux程式設計基礎》第四章習題Linux程式設計
- Python程式設計基礎題(7-輸入星期數字,輸出對應英文)Python程式設計
- Java程式設計基礎33——JDBCJava程式設計JDBC
- React基礎:宣告式程式設計React程式設計
- shader程式設計基礎:畫線程式設計
- Golang併發程式設計基礎Golang程式設計
- 併發程式設計基礎(下)程式設計
- 併發程式設計基礎(上)程式設計
- Linux系統程式設計基礎Linux程式設計
- JAVA網路程式設計基礎Java程式設計
- Java 基礎程式設計筆記Java程式設計筆記
- Java併發程式設計基礎Java程式設計
- PTA基礎6-8簡單階乘計算