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\) 第一个等于零的就是最短的宽。

两种方法都可以通过此题。

代码

方法一:

AC 记录

#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;
}

方法二:

AC 记录

#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;
}
posted @ 2023-02-20 19:23  Ggsddu_zzy  阅读(7)  评论(0编辑  收藏  举报