1283 最小周長(水題)
阿新 • • 發佈:2017-09-04
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示例
24Output示例
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 最小周長(水題)