1. 程式人生 > >1283 最小周長(水題)

1283 最小周長(水題)

img icon tdi mage div 一道 自己的 highlight 示例

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\n" , 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;
}

  

1283 最小周長(水題)