题解
【入门】玫瑰花圃
1 条题解
-
0
解题思路
n×n 的花圃里,粉玫瑰种在:最中间一行、最中间一列、以及 4 个顶点。要算粉玫瑰占地百分比。
思路:数粉玫瑰格子数。
- 最中间一行:有 n 个格子
- 最中间一列:也有 n 个格子,但中间那个格子(十字交叉处)和中间行重复了,所以只加 n-1 个
- 4 个顶点:左上、右上、左下、右下,都不在中间行或中间列上,所以加 4 个
粉玫瑰格子数 = n + (n-1) + 4 = 2n + 3
然后算百分比:粉玫瑰格子 ÷ 总格子(n×n)× 100%,保留 1 位小数。
为什么要去重? 中间行和中间列交叉的中心格子,既属于行又属于列,如果都算就重复了,要减去 1 个。
举例:n=5
- 粉玫瑰 = 2×5+3 = 13 格
- 占比 = 13÷25 = 52%
参考代码
#include <iostream> #include <iomanip> using namespace std; int main() { int n; cin >> n; int pink = n + (n - 1) + 4; // 中间行 + 中间列(去重) + 顶点 double pct = (double)pink / (n * n) * 100.0; cout << fixed << setprecision(1) << pct << "%" << endl; return 0; }复杂度分析
- 时间复杂度:O(1)
- 空间复杂度:O(1)
- 1