NC50771. 均分糖果
描述
输入描述
每个测试文件包含多组测试数据,每组输入的第一行输入一个整数N(1<=N<=100),表示有N堆糖果。
接下来一行输入N个整数A1 A2...An,表示每堆糖果初始数,1<=Ai<=10000。
输出描述
对于每组输入数据,输出所有堆均达到相等时的最少移动次数。
示例1
输入:
4 9 8 17 6
输出:
3
C 解法, 执行用时: 1ms, 内存消耗: 308K, 提交时间: 2023-03-11 14:38:33
#include <stdio.h> int main() { int n,a[105],b[105],i,sum=0,count=0; while(scanf("%d",&n)!=EOF) { sum=0;count=0; for(i=0;i<n;i++){ scanf("%d",&a[i]); sum+=a[i]; } sum/=n; for(i=0;i<n;i++){ b[i]=a[i]-sum; } for(i=0;i<n;i++){ b[i+1]+=b[i]; if(b[i]!=0) count++; } printf("%d\n",count); } return 0; }
C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 480K, 提交时间: 2019-07-09 08:55:02
#include<bits/stdc++.h> using namespace std; int main() { int n,num[108],sum=0; while(~scanf("%d",&n)) { sum=0; for(int i=1;i<=n;i++) scanf("%d",&num[i]),sum+=num[i]; int cnt=0,yu=0; sum/=n; for(int i=1;i<=n;i++) { yu+=num[i]-sum; if(yu!=0) cnt++; } printf("%d\n",cnt); } }
C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 400K, 提交时间: 2019-07-09 13:40:09
#include<bits/stdc++.h> using namespace std; int main() { int n,a[1001]; while(scanf("%d",&n)!=EOF) { int ans=0,sum=0; for(int i=1;i<=n;++i) scanf("%d",&a[i]),sum+=a[i]; sum/=n; for(int i=1;i<=n;++i) { if(a[i]!=sum) a[i+1]-=sum-a[i],ans++; } printf("%d\n",ans); } }