Codeforces Round #196 (Div. 2)B

http://codeforces.com/contest/337/problem/B

题意:给你4个数,a,b,c,d,这四个数分别是两个矩形的长宽之比a:b和c:d,让c:d的矩形尽可能充满a:b的矩形而使得空隙最小,输出空隙与a:b矩形最简比。

思路:如果要使得最大,肯定剩下的空白是矩形,画图就会发现实际上空白:a:b矩形之比可以由c:d矩形和a:b矩形得到,而两个矩形之比实际上就是其中一个边之比,所以,转化成数学问题就是:给你四个数,如果b/a>d/c,就通分分母,如果b/a<d/c,通分分子,如果相等,直接输出0/1,然后所得的分子(或分母)之比就是矩形a;b和矩形c:d的有空白的边长之比,化简相减就能得到结果。

AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int gcd(int a,int b)
{
    int r,t;
    while(b!=0)
    {
        r=a%b,a=b,b=r;
    }
    return a;
}
int main()
{
    int a,b,c,d;
    int t;
    int x,y;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if(b*c>a*d)x=b*c,y=a*d;
    else if(b*c<a*d)x=a*d,y=b*c;
    else if(b*c==a*d){ printf("0/1\n");return 0; }
    t=gcd(x,y);
    x/=t,y/=t;
    printf("%d/%d\n",x-y,x);
    return 0;
}

 

 

posted @ 2013-08-17 02:12  拼搏今朝 努力奋进  阅读(259)  评论(0)    收藏  举报