3 solutions

  • 0
    @ 2021-10-18 1:31:19

    题解

    一开始以为直接判断前n-1项里不等于平均值就行了,事实证明我想多了。。。毕竟要是前面移动的时候刚好后面已经等于平均值了嘞(就比如说:12 8 11 9),对吧。 所以每次记录一下与平均值的差值,这里不管正负,然后for循环里判断前一个差值加上自己不等于平均值的时候,移动次数就++。

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	std::ios::sync_with_stdio(false);
    	int n,sum=0,ans=0,t=0;
    	cin>>n;
    	int a[n];
    	for(int i=0;i<n;i++){
    		cin>>a[i];
    		sum+=a[i];
    	}
    	int av=sum/n;
    	for(int i=0;i<n-1;i++){
    		if(a[i]+t!=av){
    			t=a[i]+t-av;
    			ans++;
    		}
    		else t=0;
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    

    Information

    ID
    111
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    4
    Tags
    # Submissions
    105
    Accepted
    48
    Uploaded By