Codeforces Round #196 (Div. 2) B. Routine Problem

题目大意:给你显示器屏幕的比例(a:b)和你要看电影的比例(c:d),求调整后剩下的没有到的区域和总面积的比例。

题目分析:在做虚拟赛的时候,对自己的想法不是很确定,能否AC。在提交WA后,就果断放弃了。第二天在做的时候发现是自己特例没想到。虽说我的想法很笨拙,但是还是能AC的。反正就是定长比宽,或者是定宽比长。

下面是代码:

#include <iostream>
#include <stdio.h>
using namespace std;

int gcd(int a,int b)
{
    return b == 0 ? a : gcd(b,a%b);
}
int main()
{
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    int g1 ,g2;
    g1 = gcd(a,b);
    g2 = gcd(c,d);
    if(g1 != 1) a /= g1,b /= g1;
    if(g2 != 1) c /= g2,d /= g2;
    if(a == b) a = 1,b = 1;
    if(c == d) c = 1,d = 1;
    double t1 = (double)a/b;
    double t2 = (double)c/d;
    //printf("%lf\n",t1);
   // printf("%lf\n",t2);
    int com;
    if(t1 < t2)
    {
        g1 = gcd(a,c);
        com = (a * c)/g1/a;
        b = b*com;
        com = (a*c)/g1/c;
        d = d*com;
        g1 = gcd(b,d);
        b /= g1;
        d /= g1;
        printf("%d/%d\n",(b-d),b);
    }
    else if(t1 > t2)
    {
        g2 = gcd(b,d);
        com = (b*d)/g2/b;
        a = a * com;
        com = (b*d)/g2/d;
        c = c * com;
        g2 = gcd(a,c);
        a /= g2;
        c /= g2;
        printf("%d/%d\n",(a-c),a);
    }
    else printf("0/1\n");
    return 0;
}

PS:代码写的很戳....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值