Tom and paper

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5224

题意:

        给定一张长方形纸的面积,其边长均为整数,求最小周长。

        输入:首行输入案例数T,接下来T行分别输入测试面积n;

        输出:单行输出最小周长。

案例:

   Sample Input

3 2 7 12
Sample Output
    6
    16
    14

分析:

        此题,本人也是抱着尝试的态度,没想到竟然AC。矩形面积为长*宽,其中一条短边长定不过面积的平方根值,矩形周长为(长*宽)*2,只需找出(长+宽)的最小值即可。

源代码:

 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 int main()
 5 {
 6     int T,k;
 7     long n,min;
 8     cin>>T;//案例数
 9     while(T--)
10     {
11         cin>>n;//测试数据
12         min=n+1;//假定min为最小周长的二分之一
13         k=int(sqrt(n)+1);//矩形短边边长测试数据最大值
14         for(int i=2;i<=k;i++)
15             if(n%i==0&&min>((n/i)+i))//比较判别最小周长的二分之一
16                 min=i+n/i;
17         cout<<2*min<<endl;//输出最小周长
18     }
19     return 0;
20 }

 

posted @ 2015-07-31 22:02  ~瞬间*  阅读(181)  评论(0编辑  收藏  举报