财务公司网站模板,wordpress分类目录归档,做响应式网站用什么框架,深圳市信任网站CSP-201712-2-游戏
解题思路 初始化变量#xff1a;定义整数变量n和k#xff0c;分别用来存储小朋友的总数和淘汰的特定数字。然后定义了num#xff08;用来记录当前报的数#xff09;和peopleIndex#xff08;用来记录当前报数的小朋友的索引#xff09;。 初始化小朋…CSP-201712-2-游戏
解题思路 初始化变量定义整数变量n和k分别用来存储小朋友的总数和淘汰的特定数字。然后定义了num用来记录当前报的数和peopleIndex用来记录当前报数的小朋友的索引。 初始化小朋友数组通过一个循环创建一个peopleArr数组这个数组中的每个元素代表一个小朋友的编号从1到n。 游戏逻辑处理使用一个while循环来模拟报数和淘汰过程。这个循环会一直执行直到只剩下一个小朋友即peopleArr的大小变为1。 淘汰规则在每次循环中首先检查当前报的数num是否满足淘汰条件如果num是k的倍数或者num的个位数等于k那么当前报数的小朋友就会被淘汰。如果满足淘汰条件使用erase方法从peopleArr中移除当前小朋友并且人数n减一。如果被淘汰的是当前队列的最后一个人则peopleIndex会通过% n自动回到队列开头。 更新报数和索引如果当前小朋友没有被淘汰那么报数索引peopleIndex将向前移动一位考虑到循环队列所以使用% n。不管是否淘汰每次循环结束时报数num都会递增。
完整代码
#includeiostream
#includevector
using namespace std;
int main() {int n, k;cin n k;int num 1, peopleIndex 0;vectorintpeopleArr(n);// 人员编号for (int i 0; i n; i){peopleArr[i] i 1;}while (true){if (peopleArr.size() 1) // 终止条件只剩一个人{break;}if (num % k 0 || num % 10 k) { // 淘汰规则peopleArr.erase(peopleArr.begin() peopleIndex); // 移除队伍n--; // 总人数-1peopleIndex peopleIndex % n; // 更新循环队列}else{peopleIndex (peopleIndex 1) % n; // 更新循环队列} num; // 报数1}cout peopleArr[0];return 0;
}