题目链接:
题目大意:
给出长和宽,给出长宽比,缩短长和宽问最大的面积。
题目分析:
因为长宽比知道,除去长宽比的gcd,二分因数k即可,因为长宽一定是长宽比的k倍,且k相同。
AC代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef long long LL;
LL a,b,x,y;
LL gcd ( LL a , LL b )
{
return !b?a:gcd(b,a%b);
}
int main ( )
{
while ( ~scanf ( "%I64d%I64d%I64d%I64d" , &a , &b , &x , &y ) )
{
LL l = 1 , r = 2*(1e9),mid;
LL d = gcd( x , y );
x /= d;
y /= d;
while ( l != r )
{
mid = (l+r+1)>>1;
if ( x*mid <= a && y*mid <= b ) l = mid;
else r = mid-1;
}
if ( x*l > a || y*l > b ) puts ( "0 0" );
else printf ( "%I64d %I64d\n" , l*x , l*y );
}
}