F - Data Center codeforces补题(应该有更好的方法)

You are developing a project to build a new data center. The data center will be a rectangle with an area of exactly n square meters. Each side of the data center must be an integer.
Your goal is to minimize the impact of the external environment on the data center. For this reason, you want to minimize the length of the perimeter of the data center (that is, the sum of the lengths of its four sides).
What is the minimum perimeter of a rectangular data center with an area of exactly n square meters, if the lengths of all its sides must be integers?

Input
The first and only line of the input contains an integer n(1≤n≤105), where
n
is the area of the data center in square meters.

Output
Print the required minimum perimeter in meters.

Examples
Input
36
Output
24
Input
13
Output
28
Input
1
Output
4
Note
In the first example, the required shape of the data center is 6×6
6
×
6
square. Its area is 36
36
and the perimeter is 6+6+6+6=24
.

In the second example, the required shape of the data center is 1×13 rectangle. Its area is 13 and the perimeter is 1+13+1+13=28
In the third example, the required shape of the data center is 1×1 square. Its area is 1 and the perimeter is 1+1+1+1=4

思路: 没有什么特别好的思路,本来想判断一波质数,然后筛出去,然后找最大公因数,把他们加起来.
后来发现暴力做也可以…然后就暴力做了

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

const int maxx=0x3f3f3f3f;
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    int cnt=maxx;
    for(int i=1;i*1<=n;i++)
    {
        if(n%i==0)
            {
                int ans= n/i;
                cnt = min(cnt,(ans+i)*2);
            }
    }
    printf("%d\n",cnt);
    return 0;
}
发布了340 篇原创文章 · 获赞 128 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/king9666/article/details/104137549
今日推荐