题解 | Candy Sharing Game
Candy Sharing Game
https://www.nowcoder.com/practice/33adf53e095440b2823a39146a285b77
#include<stdio.h>
#include<vector>
using namespace std;
//判断是否相等,注意&
bool isSame(vector<int> &vec) {
for (int i = 0; i < vec.size(); i++) {
if (vec[0] != vec[i])return false;
}
return true;
}
//分糖果
void fentangguo(vector<int> &vec, vector<int> &vec2) {
//每个同学同时把自己的糖分成2半
for (int i = 0; i < vec.size(); i++) {
vec2[i] = vec[i] / 2;
vec[i] -= vec[i] / 2;
}
//给下一个同学后,判断奇数+1
for (int i = 0; i < vec.size(); i++) {
vec[(i + 1) % vec.size()] += vec2[i];
if (vec[(i + 1) % vec.size()] % 2 != 0)vec[(i + 1) % vec.size()]++;
}
}
int main() {
int num;
//初始化学生糖果
//此时每个学生的糖果总数不一定是偶数
while (scanf("%d\n", &num) != EOF) {
int turn = 0;
if (num == 0)break;
vector<int> vec(num);
vector<int> vec2(num);
for (int i = 0; i < vec.size(); i++) {
scanf("%d\n", &vec[i]);
}
//直到所有同学的糖果数相等则退出while
while (!isSame(vec)) {
turn++;
fentangguo(vec, vec2);
}
printf("%d %d", turn, vec[0]);
}
return 0;
}
计算机复试机试(王道版) 文章被收录于专栏
收录王道2026年计算机复试机试的(课程)代码题解,仅供个人学习参考

格力公司福利 350人发布