题解 | 元素方碑

元素方碑

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

#include<bits/stdc++.h>
using namespace std;

using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;

void solve()
{
	int n,sum1=0,sum2=0;//首先肯定能想到所有值的和能被n整除 否则无法平分
	cin >> n;
	vector<int>v(n+1,0);
	for(int i=1;i<=n;i++)
	{
		cin >> v[i];
		if(i%2==1) sum1+=v[i];
		else sum2+=v[i];
	}
	if((sum1+sum2)%n==0)//可以整除
	{
		//分别计算奇数位的和 偶数位的和
		if(n%2==0)//如果是偶数n 两者应该相等
		{
			if(sum1==sum2) cout << "YES" << "\n";
			else cout << "NO" << "\n";
		}
		else//如果是奇数n 奇数和应该比偶数和多一份平均值
		{
			if(sum1-sum2==(sum1+sum2)/n) cout << "YES" << "\n";
			else cout << "NO" << "\n";
		}
	}
	else//不能整除
	{
		cout << "NO" << "\n";
	}
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t=1;
	cin >> t;
	
	while(t--)
	{
		solve();
	}
	return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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