首页 > 学院 > 开发设计 > 正文

POJ-3979-分数加减法(分数运算)

2019-11-06 06:48:40
字体:
来源:转载
供稿:网友
//传送门:http://poj.org/PRoblem?id=3979#include <queue>#include <functional>#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <stack>#include <vector>#include <set>#include <map>#include <string>#include <cmath>#include <cstdlib>#include <ctime>#include <assert.h>using namespace std;#define N 100005int gcd(int a,int b){   return b==0?a:gcd(b,a%b);}int main(){    int a,b,c,d;    char ch;    while(~scanf("%d/%d%c%d/%d",&a,&b,&ch,&c,&d)){   //以固定格式输入,会比输入字符串更易处理    int e = b*d/gcd(b,d);                            // e 为通分后的分母 ,对应的a c都要变化    a*=d/gcd(b,d);    c*=b/gcd(b,d);    if(ch=='-') a-=c;    else a+=c;    int f=a/gcd(a,e);                                // 两个分式合并后,分子为a,分母为f , 分子分母再化简    e/=gcd(a,e);                                     // 如果分子为0,直接输入0    if(f==0){         printf("0/n");         continue;    }    if(e<0){                                          //分母不能有负号      f*=-1;      e*=-1;    }    printf("%d",f);                                          if(e!=1) printf("/%d",e);                         //分母为1,则不输出    puts("");    }    return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表