P1031 [NOIP 2002 提高组] 均分纸牌 题解

· · 题解

P1031 [NOIP 2002 提高组] 均分纸牌 题解

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
int a[110];
signed main(){
    int n,cnt = 0,sum = 0; cin >> n;
    for(int i = 1;i <= n;i++) cin >> a[i],sum += a[i];
    sum /= n;//均值 
    for(int i = 1;i <= n;i++) a[i] -= sum;
    for(int i = 1;i <= n;i++){
        if(a[i] == 0) continue;//不用管了
        a[i+1] += a[i];//下一项有可能>sum或<sum,但都只用+a[i]就行了 
        cnt++;//操作次数+1          因为a[i]有正有负 使a[i]变为0 
    }
    cout << cnt;
    return 0;
}