BIT 1001 Average Numbers

来源:互联网 发布:中国为什么不禁烟 知乎 编辑:程序博客网 时间:2024/05/22 14:21

题目大意:给出NN<=2*10^5)个数,问你有多少个这样的数,使得他等于另外N-1个数的算术平均数,并输出它在原序列的编号。

 

考察点:模拟

 

思路分析:直接算算术平均数会涉及到除法的精度问题,所以将问题转换一下,变为这个数的(N-1)倍等于其它n-1个数的和。

 

交了4次才AC,这个输出格式。。就不能自动忽略末尾的空格么。。上代码

 

#include<stdio.h>
#include<string.h>

int main()
{
    int t,n,i,k,s;
    int a[200003],v[200003];
    scanf("%d",&t);
    for (k=1;k<=t;k++)
    {
        scanf("%d",&n);
        v[0]=0;s=0;
        for (i=1;i<=n;i++)
        {
          scanf("%d",&a[i]);
          s=s+a[i];
        }
        for (i=1;i<=n;i++)
        {
          if ((a[i]*(n-1))==(s-a[i]))
            {
               v[0]++;
               v[v[0]]=i;
            }
        }
        printf("%d\n",v[0]);
        for (i=1;i<=v[0];i++)
        {
          if (i!=v[0])
          printf("%d ",v[i]);
          else printf("%d",v[i]);
        }
        if (v[0]!=0) printf("\n");
    }
   return 0;
}                               
            

 

 

 

原创粉丝点击