[2002年NOIP提高组] 均分纸牌

[2002年NOIP提高组] 均分纸牌

  • 分析:根据题意,先求所有数字的平均数,然后遍历数字与平均数比较,如果大于平均数,那么后一堆纸牌加上前一堆纸牌多出来的,同时步数+1,反之如果小于平均数,就用后一堆纸牌减去前一堆纸牌少的部分,步数+1,最后输出步数。
  • #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int a[10001];
    int main()
    {
    int n,ave=0,sum=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    cin>>a[i];
    ave+=a[i];
    }
    ave/=n;//求平均数
    for(int i=1;i<=n;i++)
    {
    if(a[i]>ave)
    {
    sum++;
    a[i+1]+=a[i]-ave;//后一推牌加上前一堆牌剩余的
    }
    if(a[i]<ave)
    {
    sum++;
    a[i+1]-=ave-a[i];
    }
    }
    cout<<sum;
    return 0;
    }

posted @ 2022-08-16 10:10  4lovls  阅读(25)  评论(0)    收藏  举报