• 12:分数求和


    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

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 using namespace std;
     6 long long int a[1000001];
     7 long long int b[1000001];
     8 long long int anszi=1;
     9 long long int ansmu=1;
    10 long long int gcd(long long int a,long long int b)
    11 {
    12     if(a==0)return b;
    13     else return gcd(b%a,a);
    14 }
    15 int main()
    16 {
    17     long long int n;
    18     cin>>n;
    19     
    20     for(int i=1;i<=n;i++)
    21     {
    22         scanf("%d/%d",&a[i],&b[i]);
    23     }
    24     if(n==1)
    25     {    
    26         long long int gys=gcd(a[1],b[1]);
    27         a[1]=a[1]/gys;
    28         b[1]=b[1]/gys;
    29         if(b[1]==1)
    30         {
    31             cout<<a[1];    
    32             return 0;
    33         }
    34         cout<<a[1]<<"/"<<b[1];
    35         return 0;
    36     }
    37     for(int i=1;i<=n-1;i++)
    38     {
    39         ansmu=b[i+1]*b[i];
    40         anszi=a[i]*(ansmu/b[i])+a[i+1]*(ansmu/b[i+1]);
    41         b[i+1]=ansmu;
    42         a[i+1]=anszi;
    43     }
    44     long long int zi=anszi;
    45     long long int mu=ansmu;
    46     long long int gys=gcd(zi,mu);
    47     anszi=anszi/gys;
    48     ansmu=ansmu/gys;
    49     if(ansmu==1)cout<<anszi;
    50     else
    51     {
    52         cout<<anszi<<"/"<<ansmu;
    53     }
    54     return 0;
    55 }

    这个题的测试数据比较坑爹

    1.要考虑的分母为0的情况

    2.要考虑的n为1的情况

    3.所有数据全开long long否则最后一个点不过

  • 相关阅读:
    配置HDFS HttpFS和WebHDFS
    编译hbase-1.2.3源代码
    Yarn application has already exited with state FINISHED
    一种基于Redis的10行代码实现IP频率控制方法
    PRId64的正确用法
    cmake检测g++编译器是否支持c++11
    定时取指定进程内存脚本
    C++常见gcc编译链接错误解决方法
    Congestion Avoidance in TCP
    Studying TCP's Throughput and Goodput using NS
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6511596.html
Copyright © 2020-2023  润新知