题解 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;
}
posted @ 2020-03-21 21:16  Laser_Crystal  阅读(139)  评论(0编辑  收藏  举报