Problem G: 平均數在哪兒?
阿新 • • 發佈:2020-12-21
技術標籤: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;
}