题解 | 元素方碑

元素方碑

https://www.nowcoder.com/practice/5c6e7ed4726e41f4ac99a4dedf1e5bb2

#include <stdio.h>
int main() {
    //考虑操作中的不变量:操作的本质就是在相隔变量中的转移,所以自始至终,奇数位的和不变,偶数位的和不变
    int t;
    scanf("%d",&t);
    int n,a[200005];
    int ave,i,sum1=0,sum2=0,sum=0;
    while(t--){
        scanf("%d",&n);
        for(i=1;i<=n;i++){
            scanf("%d",&a[i]);
            sum+=a[i];
        }
        if(sum%n!=0){
            printf("NO\n");
        }
        else{
        if(n%2==0){
            for(i=1;i<=n-1;i=i+2){
                sum1+=a[i];
            }
            for(i=2;i<=n;i=i+2){
                sum2+=a[i];
            }
            ave=(sum1+sum2)/n;
            if(sum1==ave*(n/2)&&sum2==ave*(n/2)){
                printf("YES\n");
            }
            else printf("NO\n");
        }
        else{
             for(i=1;i<=n;i=i+2){
                sum1+=a[i];
            }
             for(i=2;i<=n-1;i=i+2){
                sum2+=a[i];
            }
            ave=sum/n;
            if(sum1==(n+1)/2*ave&&sum2==(n-1)/2*ave)
            printf("YES\n");
            else printf("NO\n");
        }
        }
        sum=0;
        sum1=0;
        sum2=0;
    }
    return 0;
}

全部评论

相关推荐

牛客44320985...:你的当务之急是把这个糖的要死的沟槽ide主题改了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务