- 题目描述 
 牛村村口要架设一个矩形的广告屏,村长要求广告屏的总像素必须为n,还要求广告屏的长和宽最大可能的接近,而且宽不能大于长,村长找你来计算一下宽和长分别为多少?
- 输入描述: 
 输入一行,包含一个正整数n表示像素点个数。(1 <= n <= 1000000)
- 输出描述: 
 宽和长,两个整数之间用空格隔开。
- 示例1 
 输入:8
 输出:2 4
- 解题思路: 
 根据题目要求,设宽为 x ,长为 x + k ,则有 x(x+k) = n,- ,若要长和宽尽可能接近,且宽不大于长,相当于令 k 趋于 0, 令 k 对 x 求导有: - ,由于 f(x) 恒为负,因此 x 越大,k 越小,且 k 不能为负数,因此 n ≥ x*x。可以从 x = 1,开始遍历,找到能够整除 n 的最大的 - ,则相应的长为: - 。 
- C# 代码 - using System; class Program{ static void Main(){ string input; while((input = Console.ReadLine()) != null){ int n = int.Parse(input); int x = 1; for(int i = 1; i*i <= n; i++) if(n%i == 0) x = i; Console.WriteLine(x + " " + n/x); } } }

 京公网安备 11010502036488号
京公网安备 11010502036488号