题目描述
小杨有一个包含 n 个正整数的序列 a。他认为一个序列是平衡的当且仅当存在一个正整数 i(1≤i<n)使得序列第 1 到第 i 个数字的总和等于第 i+1 到第 n 个数字的总和。
小杨想请你判断序列 a 是否是平衡的。
输入格式
本题单个测试点内包含多组测试数据。第一行是一个正整数 t,表示测试用例组数。
接下来是 t 组测试用例。对每组测试用例,一共两行。
第一行包含一个正整数 n,表示序列长度。
第二行包含 n 个正整数,代表序列 a。
输出格式
对每组测试用例输出一行一个字符串。如果 a 是平衡的,输出 Yes,否则输出 No。
输入输出样例
输入 #1
3 3 1 2 3 4 2 3 1 4 5 1 2 3 4 5
输出 #1
Yes Yes No
#include<iostream>
using namespace std;
int main() {
int x,y;
cin>>x;
int arr[100000];
for(int i=0;i<x;i++){
cin>>y;
bool have=false;
int all=0,right=0;
for(int j=0;j<y;j++){
int z;
cin>>z;
arr[j]=z;
all+=z;
}
//cout<<"all:"<<all<<endl;
for(int k=0;k<y;k++){
right+=arr[k];
//cout<<"right"<<right<<endl;
if(right*2==all) have=true;
if(right*2>all) break;
}
if(have) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
#include<iostream>
using namespace std;
int main() {
int x,y;
cin>>x;
int arr[10000];
for(int i=0;i<x;i++){
cin>>y;
bool have=false;
for(int j=0;j<y;j++){
int z;
cin>>z;
arr[j]=z;
}
for(int k=0;k<y-1;k++){
int left=0,right=0;
for(int l=0;l<=k;l++){
left+=arr[l];
//cout<<"left:"<<left<<endl;
}
for(int m=k+1;m<y;m++){
right+=arr[m];
//cout<<"right:"<<right<<endl;
}
if(left==right){
have=true;
}
}
if(have) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}