1. 程式人生 > 其它 >Problem G: 平均數在哪兒?

Problem G: 平均數在哪兒?

技術標籤:C

作業9
Problem G: 平均數在哪兒?
Description
給你一個正整數序列a1, a2, …, an.,找出所有的i, 滿足第i個數是其他所有數的平均數。

Input
第一行是一個正整數T,表示測試用例個數。每個測試用例的第一行是一個正整數n(2 ≤ n ≤ 2·105)。第二行是n個正整數a1, a2, …, an (1 ≤ ai ≤ 1000)。

Output
對於每組測試用例,第一行輸出滿足條件的數的個數,第二行輸出所有滿足條件的數的編號(兩編號之間用一個空格隔開),編號為從1到n的正整數。

如果不存在滿足條件的數,輸出一個0,不用輸出第二行。
Sample Input

3
4
1 309 455 127
5
1 2 3 4 5
4
50 50 50 50

Sample Output

0
1
3
4
1 2 3 4

答案:

#include<stdio.h>

int main()
{
    int t;
    scanf("%d",&t);

    for(int kk=0;kk<t;kk++){
        int len;
        scanf("%d",&len);

        int a[len];
        int sum=0;
        for(int i=
0;i<len;i++){ scanf("%d",&a[i]); sum+=a[i]; } if(len==1){//由於後面的檢驗分母為(len-1)所以此處len==1單獨討論! printf("1\n%d\n",a[0]); continue; } int count=0; int all[len]={0}; for(int i=0;i<len;i++
){ if((sum-a[i])/(len-1)==a[i]){//注意仔細讀題,是該數等於其它數的平均數就是符合要求的! all[count++]=1+i; } } printf("%d\n",count); if(count){ int sign=0; for(int i=0;i<count;i++){ if(sign==1){ printf(" %d",all[i]); }else{ printf("%d",all[i]); sign=1; } } printf("\n"); } } return 0; }