C++课后习题训练记录Day79
2026/5/31 17:40:21 网站建设 项目流程

1.练习项目:

问题描述

Bob 和 Alice 最近在学习博弈论,为了学以致用,他们找来了一大堆的小饼干,并通过博弈的方式来吃掉这些小饼干。他们将找来的小饼干分成 𝑛 堆,每堆小饼干有 𝑎𝑖 个小饼干。他们轮流对这些饼干进行操作,操作规则如下:

• 由 Alice 先手,每次从一堆小饼干中拿出 𝑘的𝑚次方 个小饼干( 𝑘 为奇数且 𝑚≥0,且 𝑘的𝑚次方 不能超出该堆小饼干的总数)。

• 当一方进行完操作后,如果已经没有剩余的小饼干,则该方获胜,赢得所有的小饼干。

Alice 和 Bob 都想赢得所有的小饼干,所以都会以最佳方法来取小饼干,请问他们之中谁能赢得所有的小饼干?

输入格式

第一行,输入两个正整数 𝑛(1≤𝑛≤2×106) , 𝑘(1≤𝑘≤109) ,分别表示饼干的堆数和每次取出饼干的底数。 第二行,输入 𝑛 个整数,表示第 𝑖 堆小饼干有 𝑎𝑖(1≤𝑎𝑖≤106) 个小饼干。

输出格式

输出一行,包含一个字符串,输出 Alice 和 Bob 之中获胜的那个人。

2.选择课程

在蓝桥云课中选择课程《16届蓝桥杯省赛无忧班(C&C++ 组)4期》,选择第二章“基础算法”编程19并开始练习。

3.开始练习

(1)源码:

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

int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, k, cnt = 0;
cin >> n >> k;

// 统计奇数堆的数量
for (int i = 0; i < n; i++) {
int a;
cin >> a;
if (a % 2) cnt++;
}

// 判断奇数堆数量的奇偶性
cout << (cnt % 2 ? "Alice" : "Bob") << '\n';
return 0;
}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询