我在 spoj 上遇到了一个问题。这里是源代码的 ideone 链接,供您测试您的编辑:http://ideone.com/IGrTjK问题的链接是:http://www.spoj.com/problems/CANDY/尽管以正确的格式通过了给定的测试用例,但它似乎在 spoj 上给了我 WA。这是我的代码。
#include<stdio.h>
int main() {
unsigned int n, i, sum, avg, count;
while(1) {
scanf("%d", &n);
if(n == -1)
break;
unsigned int a[n+1];
sum = count = 0;
for(i=0; i<n; i++) {
scanf("%d", &a[i]);
sum += a[i];
}
if(sum%n != 0) {
printf("-1\n");
}
else {
avg = sum/n;
for(i=0; a[i]<avg; i++)
count += (avg - a[i]);
printf("%d\n", count);
}
}
return 0;
}
循环不正确
您的主循环在第一个等于或大于平均值的数据包处结束:
for(i=0;a[i]<avg;i++)
count+=(avg-a[i]);
它需要查看所有数据包:
for(i=0;i<n;i++) {
if (a[i] < avg)
count+=(avg-a[i]);
}
我是一名优秀的程序员,十分优秀!