3 solutions
-
0
题解
一开始以为直接判断前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
- 115
- Accepted
- 51
- Uploaded By