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