zoukankan      html  css  js  c++  java
  • Openjudge-计算概论(A)-分数求和

    描述:

    输入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
    思路:和普通数学算法一样,先通分(传入最小公倍数函数),再加减,最后化简(传入最大公约数函数)
    代码如下(本代码来自我的老师:http://www.cnblogs.com/huashanqingzhu/p/3448694.html):
     1 #include<stdio.h>
     2 struct fraction//分子分母结构体 
     3 {
     4     int a,b; 
     5 };
     6 int Gcd(int a,int b);//最大公约数
     7 int Lcm(int a,int b);//最小公倍数 
     8 int main()
     9 {
    10     int n,i,d;
    11     struct fraction f1,f2;
    12     char c;
    13     scanf("%d",&n);
    14     scanf("%d%c%d",&f2.a,&c,&f2.b);
    15     d=Gcd(f2.a,f2.b);
    16     if(d>1)
    17     {
    18         f2.a=f2.a/d;
    19         f2.b=f2.b/d;
    20     }
    21     for(i=2;i<=n;i++)
    22     {
    23         scanf("%d%c%d",&f1.a,&c,&f1.b);
    24         d=Lcm(f2.b,f1.b);
    25         f2.a=f2.a*d/f2.b+f1.a*d/f1.b;
    26         f2.b=d;
    27         d=Gcd(f2.a,f2.b);
    28         if(d>1)
    29         {
    30             f2.a=f2.a/d;
    31             f2.b=f2.b/d;
    32         }
    33     }
    34     if(f2.b>1)
    35         printf("%d/%d
    ",f2.a,f2.b);
    36        else
    37            printf("%d
    ",f2.a);
    38     return 0;
    39 }
    40 int Gcd(int a,int b)
    41 {
    42     int c;
    43     if(a<=0||b<=0) return -1;
    44     if(a<b)
    45     {
    46         c=a;
    47         a=b;
    48         b=c;
    49     }
    50     c=a%b;
    51     while(c!=0)
    52     {
    53         a=b;
    54         b=c;
    55         c=a%b;
    56     }
    57     return b;
    58 }
    59 int Lcm(int a,int b)
    60 {
    61     int c;
    62     if(a<=0||b<=0) return -1;
    63     c=Gcd(a,b); 
    64     return a*b/c;
    65 }
    我不怕千万人阻挡,只怕自己投降…
  • 相关阅读:
    (三)认识twisted reactor
    (二)inlineCallbacks,同步方式写异步代码
    (一)使用twisted Deferred
    javascript通过字典思想操作数据
    锱铢必较,从(function(){}())与(function(){})()说起
    针对谷歌默认最小字体12px的正确解决方案 (css、html)
    百度搜索研发部:同义词反馈机制
    LinkedList与ArrayList的区别
    从源码的角度分析List与Set的区别
    springboot整合redisson分布式锁
  • 原文地址:https://www.cnblogs.com/geek-007/p/4295405.html
Copyright © 2011-2022 走看看