题目描述:
牛村村口要架设一个矩形的广告屏,村长要求广告屏的总像素必须为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;
}

京公网安备 11010502036488号