基礎程式設計題(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分)程式設計
- PTA基礎程式設計題目集 6-11 求自定型別元素序列的中位數 (25分)程式設計型別
- 7-8 使用一維陣列求平均值 (20分)_PTA_Java基礎練習陣列Java
- C++有理數類設計C++
- MapReduce程式設計基礎(二)——數值概要(計算最大值、最小值、平均值)程式設計
- JavaSE基礎程式設計十題Java程式設計
- PTA 程式設計 判斷題-期末複習程式設計
- 《java程式設計基礎》例題5.6Java程式設計
- PTA - C程式設計 NoC - 指標 (11道題)C程式程式設計指標
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- C++程式設計基礎(2)變數C++程式設計變數
- 程式設計基礎程式設計
- 2017年阿里線上程式設計題-- 數串分組阿里程式設計
- MapReduce程式設計(四) 求均值程式設計
- PyTorch基礎——均值、(無偏估計)方差PyTorch
- PTA乙級_1024 科學計數法 (20分)_pythonPython
- 10.程式程式設計基礎4~變數&運算子程式設計變數
- java實現有理數分數相關計算(淺度拷貝)案例Java
- Socket程式設計基礎程式設計
- Go程式設計基礎Go程式設計
- Java程式設計基礎Java程式設計
- Shell程式設計-基礎程式設計
- C程式設計基礎C程式程式設計
- shell程式設計基礎程式設計
- 50道Java基礎程式設計練習題Java程式設計
- [.net 物件導向程式設計基礎] (5) 基礎中的基礎——變數和常量物件程式設計變數
- 網路程式設計基礎-socket基礎程式設計
- Java 基礎02Java程式設計基礎Java程式設計
- PTA基礎6-8簡單階乘計算
- 程式設計基礎知識程式設計
- shell程式設計基礎二程式設計
- 【程式設計基礎】輸出程式設計
- 【socket程式設計基礎模板】程式設計
- 網路程式設計基礎程式設計
- QML程式設計 基礎 小白程式設計
- JNI程式設計基礎(一)程式設計
- 【Java基礎】通用程式設計Java程式設計
- linux程式設計基礎Linux程式設計