题解 | #广告屏幕#
广告屏幕
https://ac.nowcoder.com/acm/problem/22213
题目描述:
牛村村口要架设一个矩形的广告屏,村长要求广告屏的总像素必须为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; }