CodeForces#196Div.2-B. Routine Problem

题意:

输入的四个数据分别是电脑屏幕的宽高比和电影文件的宽高比。求整个屏幕之中,除了电影所占部分,剩下部分的宽高比。



分析:

判断三个方向。

1)前后两者宽高比相同

2)前者比后者数值上要大

3)前者比后者数值上要小


注意,q不能为0,p可以为0。



AC代码:

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;

int p,q,pp,qq,temp;

void ppqq() {
    if(pp < qq) swap(pp, qq);
    while(qq) {
        temp=pp%qq;
        pp=qq;
        qq=temp;
    }
    p/=pp;
    q/=pp;
}

int main() {
    int a,b,c,d;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if(a*d == b*c) {
        p=0;
        q=1;
    }
    else if(a*d < b*c) {
        p = b*c-a*d;
        q = b*c;
        pp = p;
        qq = q;
        ppqq();
    }
    else {
        p = a*d-b*c;
        q = a*d;
        pp = p;
        qq = q;
        ppqq();
    }
    printf("%d/%d\n", p, q);
    return 0;
}


你可能感兴趣的:(CodeForces#196Div.2-B. Routine Problem)