The Meanings Of Problems:
给你一个数组,数组个数可能是奇数或者偶数,每次执行一种操作,每次以中间对称,把右边的数字加到左边的数字上,若数组个数为偶数,中间自我相加,直到剩下两个数字为止。
然后若是第一个数字大,则Alice win 否则Bob win.
Subject Categories:
很simple的模拟题目。
Codes:
#include<iostream>
#include<algorithm>
#include<functional>
#include<cmath>
using namespace std;
const int MAXN = 110;
int main(){
int nCase,num;
int digit[MAXN];
cin>>nCase;
for(int i=1;i<=nCase;i++){
cin>>num;
for(int j=0;j<num;j++){
cin>>digit[j];
}
while(num!=2){
for(int l=0;l<=(num%2?num/2:num/2-1);l++){
digit[l] +=digit[num-l-1];
}
num = num/2+num%2;
}
cout<<"Case #"<<i<<": ";
if(digit[0]>digit[1]){
cout<<"Alice"<<endl;
}else{
cout<<"Bob"<<endl;
}
}
return 0;
}