制作不易,不喜勿踩,谢谢
这个题目可以转换为一道的数学题:用最短的篱笆围面积最大的地
第一种:直接枚举,题目说了,长和宽都为整数, 那么我们可以枚举s所有的因数对,然后求出周长最小的那一个。
第二种:公式法,当周长不变时,长和宽越接近,面积越大,相等时,面积最大。
所以说面积最大,就是长和宽最接近的因数对,就是答案。
代码就是求所有因数对中最接近的一对
#include <bits/stdc++.h>
using namespace std;
int s, a;
int main() {
cin >> s;
for (int i = 1; i <= s/i; i ++) { //因数是一对一对出现的,s/i就是求前半部分的因数
//从小向大求因数,并用a反复刷新从而求出在前半部分最大的因数
if (s % i == 0) a = i;
}
cout << a << " " << s/a; 用s除以a,求出最接近的因数对
return 0;
}
写题解次数较少,要有语言不恰当希望在评论区提出