zoukankan      html  css  js  c++  java
  • 【NYOJ】[111]分数加减法

    这里写图片描述
    这里写图片描述

    因为输出形式也是分数
    所以这一题还是挺有意思的

    思路不难 数学问题
    需要考虑的特殊情况
    一是结果小于0
    二是结果为整数
    三是结果需要化简

    #include<stdio.h>
    int gcd(int a,int b) {
        if(b==0)
            return a;
        else
            return gcd(b,a%b);
    }
    int main() {
        int a,b,c,d;
        char s;
        while(scanf("%d/%d%c%d/%d",&a,&b,&s,&c,&d)!=EOF) {
            int m,n=b*d;
            a*=n/b;
            c*=n/d;
            if(s=='+')
                m=a+c;
            else {
                if(a<c) {
                    printf("-");
                    m=c-a;
                } else
                    m=a-c;
            }
            if(!m)
                printf("0
    ");
            else if(m%n==0) {
                printf("%d
    ",m/n);
            } else {
                int t=gcd(m,n);
                m/=t;
                n/=t;
                printf("%d/%d
    ",m,n);
            }
        }
        return 0;
    }
    

    标程用的字符串记录算式
    但思路还是一样的

    #include<stdio.h>
    char str[20];
    int Gcd(int m,int n) {
        if (m==0) return n;
        return Gcd(n%m,m);
    }
    int main() {
        int fz,fm,gcd;
        while(scanf("%s",str)!=EOF) {
            if(str[3]=='-')
                fz=(str[0]-'0')*(str[6]-'0')-(str[2]-'0')*(str[4]-'0');
            else fz=(str[0]-'0')*(str[6]-'0')+(str[2]-'0')*(str[4]-'0');
            if(fz) {
                fm=(str[2]-'0')*(str[6]-'0');
                gcd=Gcd(fz,fm);
                if(gcd<0) gcd=-gcd;
                if(fm/gcd==1) printf("%d
    ",fz/gcd);
                else printf("%d/%d
    ",fz/gcd,fm/gcd);
            } else puts("0");
        }
    }

    题目地址:【NYOJ】[111]分数加减法

  • 相关阅读:
    lua学习之循环求一个数的阶乘
    lua元表学习
    ArrayList与List性能测试
    安卓开发线程
    安卓开发
    全局设置导航栏
    LinearLayout
    安卓布局ConstraintLayout
    安卓网络请求和图片加载
    安卓启动页面
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12569848.html
Copyright © 2011-2022 走看看