Data Center 题解
题目大意
输出一个面积为 \(n\) 的矩阵的最小周长。
解题思路
方法一:
- 因为宽为整数且是不大于 \(\sqrt{n}\) 的,所以可以从 \(1\sim\sqrt{n}\) 枚举宽,长就是 \(\dfrac{n}{i}\),周长就是 \(\left(i+\dfrac{n}{i}\right)\times 2\)。
方法二:
-
其实方法一中最短的宽就是离 \(\sqrt{n}\) 最近且能被 \(n\) 整除的宽。
-
所以可以倒着枚举,从 \(\sqrt{n}\sim1\) 枚举宽,\(n\bmod i\) 第一个等于零的就是最短的宽。
两种方法都可以通过此题。
代码
方法一:
#include<bits/stdc++.h>
using namespace std;
int n,ans;
int main() {
cin>>n;
for(int i=1;i<=sqrt(n);++i)
if(n%i==0) ans=2*(i+n/i);
cout<<ans;
return 0;
}
方法二:
#include<bits/stdc++.h>
using namespace std;
int n;
int main() {
cin>>n;
for(int i=sqrt(n);i>=1;--i)
if(n%i==0) return cout<<2*(i+n/i),0;
return 0;
}