• 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 }
    我不怕千万人阻挡,只怕自己投降…
  • 相关阅读:
    辅助工具链接
    参考资料链接
    oracle sql 查询前十条数据
    oracle sql 按照汉字规则排序
    oracle sql 修改timestamp数据
    eclipse闪退
    js 数组Array
    面试题:树的子结构
    面试题:二叉树中和为某一路径
    面试题:二叉搜索树的后序遍历
  • 原文地址:https://www.cnblogs.com/geek-007/p/4295405.html
Copyright © 2020-2023  润新知