top1编程
← 返回题目
题解

【入门】玫瑰花圃

1 条题解

  • 0
    @ 2026-7-31 15:49:32

    解题思路

    n×n 的花圃里,粉玫瑰种在:最中间一行、最中间一列、以及 4 个顶点。要算粉玫瑰占地百分比。

    思路:数粉玫瑰格子数。

    1. 最中间一行:有 n 个格子
    2. 最中间一列:也有 n 个格子,但中间那个格子(十字交叉处)和中间行重复了,所以只加 n-1 个
    3. 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