有一批分辨率为 a * b 的显示器,要将长宽比例调整为 x : y,问应该如何缩小显示器,使缩小后的面积最大。
容易出错的地方是x 和 y 可能不互质,所以要求出最大公约数,给 x :y约分。
#include<iostream>
using namespace std;
int gcd(int a, int b){
if(a == 0 || b == 0)
return a + b;
else
return gcd(b % a, a);
}
int main(){
__int64 a, b, x, y;
cin >> a >> b >> x >> y;
int temp = gcd(x, y);
x /= temp;
y /= temp;
if(x > a || y > b)
cout << "0 0" << endl;
else if(x * b > a * y){
cout << a / x * x << " " << a / x * y << endl;
}else if(x * b < a * y)
cout << b / y * x << " " << b / y * y << endl;
else
cout << a << " " << b << endl;
}
本文介绍了一种用于调整显示器分辨率比例的算法,目的是在保持指定比例的同时最大化显示面积。该算法首先计算目标比例的最简形式,然后根据原始屏幕尺寸与目标比例的关系决定如何缩放。代码实现使用了C++。
181

被折叠的 条评论
为什么被折叠?



