• 1081. Rational Sum (20)


     

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    16000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    Given N rational numbers in the form "numerator/denominator", you are supposed to calculate their sum.

    Input Specification:

    Each input file contains one test case. Each case starts with a positive integer N (<=100), followed in the next line N rational numbers "a1/b1 a2/b2 ..." where all the numerators and denominators are in the range of "long int". If there is a negative number, then the sign must appear in front of the numerator.

    Output Specification:

    For each test case, output the sum in the simplest form "integer numerator/denominator" where "integer" is the integer part of the sum, "numerator" < "denominator", and the numerator and the denominator have no common factor. You must output only the fractional part if the integer part is 0.

    Sample Input 1:
    5
    2/5 4/15 1/30 -2/60 8/3
    
    Sample Output 1:
    3 1/3
    
    Sample Input 2:
    2
    4/3 2/3
    
    Sample Output 2:
    2
    
    Sample Input 3:
    3
    1/3 -1/6 1/8
    
    Sample Output 3:
    7/24


     1 #include<stdio.h>
     2 #include<vector>
     3 #include<math.h>
     4 #include<cmath>
     5 using namespace std;
     6 
     7 int getGCD(long long a,long long b)
     8 {
     9 while(b!=0)
    10 {
    11 int t = a % b;
    12 a = b ;
    13 b = t ;
    14 }
    15 
    16 return a;
    17 }
    18 int main()
    19 {
    20 int n,i;
    21 long long tem1,tem2;
    22 scanf("%d",&n);
    23 vector<long long> child,mother;
    24 for(i = 0; i < n ;i ++)
    25 {
    26 
    27 scanf("%lld/%lld",&tem1,&tem2);
    28 child.push_back(tem1);
    29 mother.push_back(tem2);
    30 }
    31 
    32 long long MonSum = 1;
    33 long long ChildSum = 0;
    34 long long tem ;
    35 for(i = 0; i < mother.size() ;i++)
    36 {
    37 ChildSum = mother[i]*ChildSum + MonSum*child[i];
    38 MonSum *= mother[i];
    39 tem = getGCD(abs(MonSum) , abs(ChildSum));
    40 ChildSum = ChildSum / tem;
    41 MonSum = MonSum / tem;
    42 }
    43 
    44 
    45 long long pre;
    46 
    47 pre = ChildSum/MonSum;
    48 ChildSum = ChildSum % MonSum;
    49 tem = getGCD(abs(MonSum) , abs(ChildSum));
    50 ChildSum = ChildSum / tem;
    51 MonSum = MonSum / tem;
    52 if(ChildSum == 0)
    53 {
    54 printf("%lld
    ",pre);    
    55 }
    56 else if( ChildSum != 0 && pre == 0)
    57 {
    58 printf("%lld/%lld
    ",ChildSum,MonSum);
    59 }
    60 else if( ChildSum != 0 && pre != 0)
    61 {
    62 printf("%lld ",pre);    
    63 printf("%lld/%lld
    ",ChildSum,MonSum);
    64 }
    65 
    66 
    67 return 0;
    68 }
  • 相关阅读:
    Spring笔记:常用xml标签和属性 山上下了雪
    Spring笔记:Hello World 山上下了雪
    Spring笔记:bean的自动装配 山上下了雪
    IntelliJ IDEA 2020.3.3 x64破解到2099年
    每日长进计划
    idea测试类中的测试方法没有运行按钮
    删除所有的phpfpm进程命令
    高质量编程
    单例模式也能玩出花
    宝塔Linux面板安装命令
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4290479.html
Copyright © 2020-2023  润新知