人人公司2017校园招聘在线考试-编程三

题目-液晶屏

描述

小B就职于一家著名的液晶屏生产企业,随着消费电子品的爆发增长,公司的液晶产品供不应求。
其中最受欢迎的产品型号为ABC001,产品的大小是a*b厘米。由于生产的原因,液晶屏的长宽都必须是整数。
然而,流行的趋势总是不断变化的。
近年来,随着消费用户群体的变化,液晶屏的长宽比也在变化,近期客户的大量订单都是x:y比例的。
因此,公司计划将ABC001产品的长宽比变更为x:y的,同时希望显示总的显示区域面积尽可能的大。
公司把这个任务交给小B。
小B希望你能帮她解决这个问题,找出合适的屏幕尺寸,或者说明无法进行变更。你能帮助她吗?

输入

测试数据有多组,每组测试数据的包含四个整数a, b, x和y(1=< a, b, x, y <=2*10^9)。

输出

对每组测试数据,在单独的行中输出结果。若可以进行尺寸变更,输出变更后的屏幕尺寸,否则输出“0 0”。

Example

Input

800 600 4 3
1920 1200 16 9
1 1 1 2

Output

800 600
1920 1080
0 0

题解

思路

  • 直接 a/x,b/y 取最两结果最小值 m
  • mx,my 就是答案
  • 切记 x/y 一定要约分,不要问为啥
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<bits/stdc++.h>

using namespace std;

int comm(int x,int y)
{
int t;
if(y>x)swap(x,y);
while(y)
{
t=y,y=x%y,x=t;
}
return x;
}
int main(){
long long a,b,x,y;
while(cin>>a>>b>>x>>y)
{
int com=comm(x,y);
x/=com,y/=com;
int t=min(a/x,b/y);
if(t)
cout<<x*t<<" "<<y*t<<endl;
else
cout<<"0 0"<<endl;
}
}