题解 CF747A 【Display Size】
一个简单地贪心
因为题目要求:
第一,显示器上必须正好有n个像素;
第二,每一行的像素个数a不能超过每一列的像素个数b, 即a<=b;
第三,你必须让b-a的差尽可能小。
那么,我们可以用一个类似于判断质数的方法来进行贪心:
n个像素,要想长宽相差最小,那差就是0(这时候n为完全平方数),如果满足不了差为零,那就将n的平方根(变量k)取整后递减,直到n%k==0为止,然后输出k和n/k。
代码看这边:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int k=0;
k=sqrt(n);
while(n%k!=0) k--;
cout<<k<<" "<<n/k;
return 0;
}