zoukankan      html  css  js  c++  java
  • ACM POJ 3979 分数加减法(水题)

    开学以来,各种忙碌,好久没有刷题了。。。。今天在POJ刷了题,,,很简单

     

     

    分数加减法
    Time Limit: 1000MS Memory Limit: 65536K
    Total Submissions: 8389 Accepted: 2668

    Description

    编写一个C程序,实现两个分数的加减法

    Input

    输入包含多行数据
    每行数据是一个字符串,格式是"a/boc/d"。

    其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。

    数据以EOF结束
    输入数据保证合法

    Output

    对于输入数据的每一行输出两个分数的运算结果。
    注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

    Sample Input

    1/8+3/8
    1/4-1/2
    1/3-1/3

    Sample Output

    1/2
    -1/4
    0

    Source

     

     

    #include<stdio.h>
    int gcd(int a,int b)
    {
    if(b==0) return a;
    return gcd(b,a%b);
    }
    int lcm(int a,int b)
    {
    int c=gcd(a,b);
    return a*b/c;
    }
    int main()
    {
    int a,b,c,d;
    char ch;
    while(scanf("%d/%d%c%d/%d",&a,&b,&ch,&c,&d)!=EOF)
    {
    int m=lcm(b,d);
    int n;
    if(ch=='+') n=a*(m/b)+c*(m/d);
    else n=a*(m/b)-c*(m/d);
    if(n==0) printf("0\n");
    else
    {
    int t=gcd(m,n);
    n
    =n/t;m=m/t;
    if(m<0) m=-m,n=-n;
    if(m==1) printf("%d\n",n);
    else
    printf(
    "%d/%d\n",n,m);
    }
    }
    return 0;
    }
  • 相关阅读:
    VB6 获取和设置默认打印机
    VB操作EXCEL文件大全
    VB常用字符串操作函数
    VB数组的清除
    清理系统内存
    转:清理系统垃圾的BAT代码
    对Kalman(卡尔曼)滤波器的理解
    Kernel Memory Layout on ARM Linux
    linux kernel内存映射实例分析
    基于ARM的模拟器
  • 原文地址:https://www.cnblogs.com/kuangbin/p/2178096.html
Copyright © 2011-2022 走看看