1283 最小周长(水题)

题目来源: Codility
一个矩形的面积为S,已知该矩形的边长都是整数,求所有满足条件的矩形中,周长的最小值。例如:S = 24,那么有{1 24} {2 12} {3 8} {4 6}这4种矩形,其中{4 6}的周长最小,为20。
Input
输入1个数S(1 <= S <= 10^9)。
Output
输出最小周长。
Input示例
24
Output示例
20

虽然是一道简单的水题,但是通过比较别人的代码和自己的代码,还是学到了一些知识

别人的代码

15ms  2060kb

#include <bits/stdc++.h>
using namespace std;

int main()
{
    long long s , i , j;
    scanf("%lld", &s);
    long long ans = 0x3f3f3f3f;
    i = (long long)sqrt(s);
    while(s % i != 0)
        i--;
    ans = i * 2 + (s / i) * 2;
    printf("%lld
" , ans);
    return 0;
}

我的代码

156ms  1706kb

#include<stdio.h>
#include<string.h>
#include<algorithm>

using namespace std;

int i,j,k;
int maxn = 0;
int main()
{
	int s;
	scanf("%d",&s);
	j=s;
	for(i=1; i<s/2; i++)
	{
		if(s%i==0)	
		{
			j = s/i;
			if(i>j)	break;
			maxn = max(i,maxn);
		}			
		
	}
	k = s/maxn;
	printf("%d",2*(k+maxn));
	return 0;
}

  

永远渴望,大智若愚(stay hungry, stay foolish)
原文地址:https://www.cnblogs.com/h-hkai/p/7475475.html