2019.11.7

12:分数求和

总时间限制: 1000ms  内存限制: 65536kB
描述

输入n个分数并对他们求和,并用最简形式表示。所谓最简形式是指:分子分母的最大公约数为1;若最终结果的分母为1,则直接用整数表示。

如:5/6、10/3均是最简形式,而3/6需要化简为1/2, 3/1需要化简为3。

分子和分母均不为0,也不为负数。

输入
第一行是一个整数n,表示分数个数,1 <= n <= 10;
接下来n行,每行一个分数,用"p/q"的形式表示,不含空格,p,q均不超过10。
输出
输出只有一行,即最终结果的最简形式。若为分数,用"p/q"的形式表示。
样例输入: 2
      1/2
      1/3
样例输出: 5/6
#include<cstdio>
#include<cctype>
using namespace std;
long long gcd(long long a,long long b)
{
    return b == 0  ? a : gcd(b,a % b);
}
int read()
{
    int x = 0;
    int f = 1;
    char ch = getchar();
    for(;!isdigit(ch);ch =getchar())
        if(ch == '-')
            f = -1;
    for(;isdigit(ch);ch = getchar())
        x = x * 10 + (ch ^ 48);
    return x * f;
}
int n, a[20], b[20];
long long sum = 1,ans = 0;
int main()
{
    n = read();
    for(int  i=1; i<=n; i++)
    {
        a[i] = read(),b[i] = read();
        sum *= b[i];
    }
    for(int i = 1;i <= n;i++)
        ans += (sum / b[i]) * a[i];
    long long g = gcd(ans,sum);
    ans /= g,sum /= g;
    if(sum > 1)
        printf("%lld/%lld",ans,sum);
    if(sum == 1)
        printf("%lld",ans);
}

没有注意到原题中画线部分。。。

根据给定的数据,计算合法速度的平均速度。如果你判断出是探测器坏了,则输出“broken”(不含引号)。
【输入】
第一行有3 个整数A, B, C(, ),分别为最低限速、最高限速和探测到的数据个数。后面一行有C 个要分析有数据,数据之间有一个空格隔开。
【输入样例1】
1 50 10
42 43 44 45 46 47 48 49 50 51
【输出样例1】
46.0000
【输入样例2】
1 50 5
42 46 48 50 52
【输出样例2】
broken
【数据规模和约定】
100%的数据中, , 。
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
int a, b, c;
int sum = 0, tot = 0, wg=0;
int s[55];
double ans;
int main()
{
    //freopen("radar.in","r",stdin);
    //freopen("radar.out","w",stdout);
    scanf("%d%d%d", &a, &b, &c);
    for(int i=1;i<=c;i++)
    {
        scanf("%d", &s[i]);
        if(s[i]<a || s[i]>b) wg++;
    }
    if(wg*1.0/c>0.1) printf("broken");
    else
    {
        for(int i=1; i<=c; i++)
        {
            if(s[i]>=a && s[i]<=b)
            {
                tot++;
                sum+=s[i];
            }
        }
        ans = sum*1.0/tot;
        printf("%.4lf", ans);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/orange-233/p/11815392.html