题目描述:
牛村村口要架设一个矩形的广告屏,村长要求广告屏的总像素必须为n,还要求广告屏的长和宽最大可能的接近,而且宽不能大于长,村长找你来计算一下宽和长分别为多少?
输入描述:
输入一行,包含一个正整数n表示像素点个数。
(1 <= n <= 1000000)
输出描述:
宽和长,两个整数之间用空格隔开。
示例1
输入
8
输出
2 4
coding:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;   
    cin>>n;
    if(n==1)   //对于1,单独说明
    {
        cout<<1<<' '<<1<<endl;
        return 0;
    }
    int width,length,min=n;  
    for(int a=1;a<=n/2;a++)     //逐一枚举
    {
        if(n%a==0)  
        {
            if((n/a-a)<=min  && (n/a-a)>=0)  
         //长和宽的差值变小 并且 满足长大于等于宽的条件,注意正方形是特殊的矩形
            {
                width=a;
                length=n/a;
                min=length-width;
            }

}
    }
     cout<<width<<' '<<length<<endl;
}