数学平均数应用
给定一个长度为 n 的数组 a。在一次操作中,你可以从索引 2 到 n−1中选择一个索引i,然后执行以下两个操作之一:
将 a[i−1] 减少 1,同时将 a[i+1] 增加 1。
将 a[i+1] 减少 1,同时将 a[i−1] 增加 1。
在每次操作后,所有值必须保持非负数。你能否通过任意次数的操作使所有元素相等?
输入格式:
第一行包含一个整数 t (1≤t≤10的4次方),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n (3≤n≤2⋅10的5次方),表示数组的长度。
每个测试用例的第二行包含 n 个整数 ai (1≤ai≤10的9次方),表示数组的元素。
保证所有测试用例的 n 之和不超过 2⋅10的5次方。
输出格式:
对于每个测试用例,如果可以通过任意次数的操作使所有数组元素相等,则输出 “YES”(不包含引号);否则,输出”NO”(不包含引号)。
输入样例:
8
3
3 2 1
3
1 1 3
4
1 2 5 4
4
1 6 6 1
5
6 2 1 4 2
4
1 4 2 1
5
3 1 2 1 3
3
2 4 2
输出样例:
在这里给出相应的输出。例如:
YES
NO
YES
NO
YES
NO
NO
NO
代码:
#include <stdio.h>
int main()
{
int n,t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int a[n];
for (int i=0;i<n;i++)
scanf("%d",&a[i]);
int sum1=0,sum2=0,num1=0,num2=0;
for (int i=0;i<n;i++)
{
if (i%2)
{
num1++;
sum1+=a[i];
}
else
{
num2++;
sum2+=a[i];
}
} //5 5 6 6不行 必须还要是除后为整数
if (sum1/num1 == sum2/num2 && (float)sum1/num1==sum1/num1)
printf("YES\n");
else
printf("NO\n");
}
}