top1编程
← 返回题目
题解

【入门】扩建鱼塘问题

1 条题解

  • 0
    @ 2026-7-31 14:56:24

    解题思路

    鱼塘是 m×n 的矩形,要扩建成一个正方形,问面积至少增加多少。

    思路:

    要把矩形变成长宽相等的正方形,边长得取 m 和 n 中较大的那个(这样原来的鱼塘能被包含进去,面积增加最少)。

    1. 如果 m > n,正方形边长取 m,新面积 m²,增加 m² - m×n
    2. 如果 n > m,正方形边长取 n,新面积 n²,增加 n² - m×n

    为什么要取大的那边? 如果取小的那边,原来的鱼塘会有一边放不下,所以必须取较大的边做边长,面积才增加最少。

    举例:鱼塘 5×3

    • 边长取 5,正方形面积 25
    • 原面积 15
    • 增加 25 - 15 = 10

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int m, n;
        cin >> m >> n;
    
        if (m > n) {
            cout << m * m - m * n << endl;  // 边长取 m
        } else {
            cout << n * n - m * n << endl;  // 边长取 n
        }
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(1)
    • 空间复杂度:O(1)
    • 1