37 条题解

  • 0
    @ 2025-7-25 14:30:17
    #include <iostream>
    using namespace std;
    
    int main() {
        int N;
        cin >> N;
        
        int cards[100]; // 存储每堆纸牌数量
        int sum = 0;    // 纸牌总数
        
        for (int i = 0; i < N; i++) {
            cin >> cards[i];
            sum += cards[i];
        }
        
        int average = sum / N; // 计算平均值
        int moves = 0;        // 移动次数
        int diff = 0;         // 当前堆与平均值的差值
        
        for (int i = 0; i < N; i++) {
            // 计算当前堆与平均值的差值
            diff = cards[i] - average;
            
            // 如果差值不为0,则需要移动
            if (diff != 0) {
                moves++;
                // 将差值传递给下一堆
                cards[i+1] += diff;
            }
        }
        
        cout << moves << endl;
        
        return 0;
    }
    
    

    信息

    ID
    1
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    4607
    已通过
    1304
    上传者