这个代码对于Candy I有什么问题?

时间:2015-08-02 18:01:02

标签: c

我遇到了关于spoj的问题。这是您测试编辑的源代码的ideone链接:http://ideone.com/IGrTjK,问题的链接是:http://www.spoj.com/problems/CANDY/它似乎给出了尽管传递给定的格式正确的测试用例,但我还是在使用了它。这是我的代码。

#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;
}

1 个答案:

答案 0 :(得分:2)

循环错误

您的主循环以等于或大于平均值的第一个数据包结束:

   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]);
   }