7-35 有理数均值 (20 分)

简介: 本题要求编写程序,计算N个有理数的平均值。

本题要求编写程序,计算N个有理数的平均值。


输入格式:

输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。


输出格式:

在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。


输入样例1:

1. 4
2. 1/2 1/6 3/6 -5/10


输出样例1:

1/6


输入样例2:

1. 2
2. 4/3 2/3


输出样例2:

1


PS:

1.难点就是累加,不然会溢出,我利用C++的__gcd()函数,非常方便

2.然后再不断地累加,直到最后的答案求出来


代码如下:

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
  int n, a = 0, b = 0, t; //a是分子,b是分母
  cin >> n;
  char c;//输入'/'
  int *top = new int[n];
  int *bottom = new int[n];
  for (int i = 0; i < n; i++) { //输入
    cin >> top[i] >> c >> bottom[i];
  }
  a = top[0];
  b = bottom[0];
  for (int i = 1; i < n; i++) {
    a = a * bottom[i] + top[i] * b;
    b *= bottom[i];
    if (a > 0)
      t = __gcd(a, b);
    else if (a < 0)
      t = __gcd(-a, b);
    //防止溢出
    a /= t;
    b /= t;
  }
  b *= n;
  if (a > 0)
    t = __gcd(a, b);
  else if (a < 0)
    t = __gcd(-a, b);
  a /= t;
  b /= t;
  if (b == 1)
    cout << a;
  else
    cout << a << "/" << b;
  delete[]top;
  delete[]bottom;
}


相关文章
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
神经网络中的分位数回归和分位数损失
在使用机器学习构建预测模型时,我们不只是想知道“预测值(点预测)”,而是想知道“预测值落在某个范围内的可能性有多大(区间预测)”。例如当需要进行需求预测时,如果只储备最可能的需求预测量,那么缺货的概率非常的大。但是如果库存处于预测的第95个百分位数(需求有95%的可能性小于或等于该值),那么缺货数量会减少到大约20分之1。
402 2
wustojc2003求整数均值
wustojc2003求整数均值
56 0
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
L1-048 矩阵A乘以B (15 分)
L1-048 矩阵A乘以B (15 分)
113 0
L1-048 矩阵A乘以B (15 分)
L2-018 多项式A除以B (25 分)(数组模拟)
L2-018 多项式A除以B (25 分)(数组模拟)
180 0
L2-018 多项式A除以B (25 分)(数组模拟)
L1-036 A乘以B (5 分)
L1-036 A乘以B (5 分)
98 0
|
算法 Python
7-2 多项式求和 (10 分)
7-2 多项式求和 (10 分)
177 0
7-1 一元多项式求导 (10 分)
7-1 一元多项式求导 (10 分)
109 0
7-21 求特殊方程的正整数解 (15 分)
7-21 求特殊方程的正整数解 (15 分)
146 0
排列组合相关公式讲解(Anm,Cnm等)
排列组合相关公式讲解(Anm,Cnm等)
3197 0
排列组合相关公式讲解(Anm,Cnm等)