糖果分享游戏
要点 利用while循环注意游戏终止的条件 所有小朋友手中的糖果都相同终止游戏 将游戏的进行过程单独写成一个函数 所有小朋友手中糖果的一半交给右边的小朋友 注意 最后一个小朋友的一半给第一个小朋友!再判断交换后是否奇数 奇数再得一个糖果
#include <bits/stdc++.h>
using namespace std;
bool Checksweet(vector<int> &vec){
int size=vec.size();
int first=vec[0];
for(int i=0;i<size;++i){
if(vec[i]!=first){
return false;}
}
return true;
}
void game(vector<int> &vec){
int size=vec.size();
vector<int> share(size);
for(int i=0;i<vec.size();i++){
share[i]=vec[i]/2;
}
vec[0]=vec[0]/2+share[vec.size()-1];
for(int i=1;i<vec.size();i++){
vec[i]=vec[i]/2+share[i-1];
}
for(int i=0;i<vec.size();i++){
if(vec[i]%2!=0){
vec[i]+=1;
}
}
}
int main(){
int n,num;
while(scanf("%d",&n)!=EOF){
if(n==0){
break;
}
vector<int> vec1;
for(int i=0;i<n;++i){
scanf("%d",&num);
vec1.push_back(num);
}//vec1中存放初始的糖果数量
int count=0;
while(Checksweet(vec1)==false){//不相同的时候一直循环
count++;
game(vec1);
}
printf("%d %d\n",count,vec1[0]);
}
}