zoukankan      html  css  js  c++  java
  • POJ 3979 分数减法【数学问题的探讨】

    将a/b和c/d简化一下就可以了


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

    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)
    {
    	return b==0?a:gcd(b,a%b);
    }
    
    int main()
    {
    	int a,b,c,d,sum1,sum2,f,flag;
    	char o;
    	while(~scanf("%d/%d%c%d/%d",&a,&b,&o,&c,&d))
    	{
    		flag=0;
    		sum2=b*d;
    		if(o=='+')
    		{
    			sum1=a*d+b*c;
    		}
    		else if(o=='-')
    		{
    			sum1=a*d-b*c;
    		}
    		f=gcd(sum1,sum2);
    		if(sum1==0)
    			printf("0
    ");
    		else if(sum2/f==1)
    			printf("%d
    ",sum1/f);
    		else
    		{
    			if(sum1<0&&sum2<0)
    			{
    				sum1=-sum1;
    				sum2=-sum2;
    			}
    			else if(sum1<0&&sum2>0)
    			{
    				sum1=-sum1;
    				flag=1;
    			}
    			else if(sum1>0&&sum2<0)
    			{
    				sum2=-sum2;
    				flag=1;
    			}
    			f=gcd(sum1,sum2);
    			if(flag==0)
    				printf("%d/%d
    ",sum1/f,sum2/f);
    			else if(flag==1)
    			{
    				printf("-%d/%d
    ",sum1/f,sum2/f);
    			}
    		}
    	}
    	return 0;
    }
    





    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    html学习之——标签语义化
    前端学习之---性能优化
    git学习之---如何把一个写好的项目传到GitHub上
    css学习体会之——块级元素,行内元素长宽设置
    部署ingress-nginx
    K8S
    ELK-Trie树
    ELK 日常问题处理
    GFS 日常操作
    MegaCli修复RAID5
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4668610.html
Copyright © 2011-2022 走看看