1. 程式人生 > >洛谷p1301均分紙牌

洛谷p1301均分紙牌

原題網址
本題用的方式是在題解找到的,因為我看所有題解基本都是一個模子刻出來的,於是就想把它搞明白,本題的思路就是先算出來平均值,然後拿每一項和平均值比較,如果不相等的話就需要挪動牌,如果a[i]小於平均數,那麼第二個數就要減去一個數(相當於從下一堆牌a[i+1]裡面拿出來sum-a[i]張牌放到a[i]中,此時a[i]的值就是平均數,)如果等於平均數的話就不需要操作了,如果a[i]>平均值,那麼就從牌裡拿出來一些放到別的地方咯~ 程式碼實現:

#include<bits/stdc++.h>
using namespace std;
int num;
int a[
1000]; int main() { int n,sum=0; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; sum+=a[i]; } int ave=sum/n; for(int i=0;i<n-1;i++) { if(a[i]!=ave) { num++; a[i+1]=a[i+1]+a[i]-ave; } } cout<<num; }