题目大意

  现有\(n\)个东西,每次可以取\(1\)个,\(2\)个或\(k\)个。Alice和Bob轮流取,且Alice先取。问谁是最后一个取的。(\(0 \leq n \leq 10^9\),\(3 \leq k \leq 10^9\))

 

题解

  首先,我们先考虑只有\(1\)和\(2\)的情况。容易想到\(3|k\)时,先手必败。

  此时,我们再加上\(k\)。随手推几下就会发现,当\(k \bmod 3 \not = 0\)时,\(k\)也就相当于是\(1\)或\(2\),这样的话直接判断即可。

  而当\(3|k\)时,实际上,当Alice取\(1\)或\(k\)时,Bob也能取\(k\)或\(1\),此时共取了\(k + 1\)个,而当Alice取\(1\)或\(2\)时,Bob也可以取\(2\)或\(1\),总共取了\(3\)个,对答案不影响。

  所以,当\(3|k\)时,我们可以让\(n\)对\(k + 1\)取余,然后最多只能取一次\(k\),判断是否能取\(k\),或再进行无\(k\)判断即可。

#include <iostream>

using namespace std;

int T;
int n, k; int main()
{
cin >> T;
while(T--)
{
cin >> n >> k;
if(k % 3)
{
if(n % 3) cout << "Alice\n";
else cout << "Bob\n";
continue;
}
n %= k + 1;
if(n == k) cout << "Alice\n";
else if(n % 3) cout << "Alice\n";
else cout << "Bob\n";
}
return 0;
}

【题解】1-2-K Game的更多相关文章

  1. 【题解】前k大子段和

    题目描述 Peter喜欢玩数组.NOIP这天,他从Jason手里得到了一个大小为\(n\)的数组. Peter求出了这个数组的所有子段和,并将这\(\frac{n(n+1)}{2}\)个数降序排列,他 ...

  2. LeetCode题解之Merge k Sorted Lists 解法二

    1.题目描述 2.分析 利用 vector 存储指针,同时合并k个链表. 3.代码 ListNode* mergeKLists(vector<ListNode*>& lists) ...

  3. LeetCode题解之 Merge k Sorted Lists

    1.题目描述 2.问题分析 使用合并两个链表的方法,逐次合并,效率较低.可以考虑同时合并K个链表. 3.代码 ListNode* mergeKLists(vector<ListNode*> ...

  4. LeetCode题解-23 合并K个排序链表 Hard

    合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1-&g ...

  5. [LeetCode题解]23. 合并K个升序链表 | 分治 + 递归

    方法一:分治 + 递归 解题思路 在21. 合并两个有序链表,我们知道如何合并两个有序链表.而本题是合并 k 个有序链表,可以通过大问题拆分成小问题解决,即把 k 个链表,拆分成 k/2 个链表组,俩 ...

  6. Codeforces Round #160 (Div. 1) 题解【ABCD】

    Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...

  7. 【USACO Mar08】 奶牛跑步 A-star k短路

    Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所以她想走最短的路经. 农场上一共有M( ...

  8. BZOJ1975 [Sdoi2010]魔法猪学院 k短路

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1975 题意概括 给出一个无向图,让你走不同的路径,从1到n,路径长度之和不超过E,求最大路径条数. ...

  9. Educational Codeforces Round 19 题解【ABCDE】

    A. k-Factorization 题意:给你一个n,问你这个数能否分割成k个大于1的数的乘积. 题解:因为n的取值范围很小,所以感觉dfs应该不会有很多种可能-- #include<bits ...

  10. 【codeforces】【比赛题解】#872 CF Round #440 (Div.2)

    链接. [A]寻找漂亮数字 题意: 给定了两列非零数字.我们说一个数是漂亮的,当它的十进制表达中有至少一个数从数列一中取出,至少有一个数从数列二中取出.最小的漂亮数字是多少? 输入: 第一行两个数\( ...

随机推荐

  1. A1042

    洗牌,共洗k次,每次将将原先的牌洗进输入好的位置. 步骤: 1 设置次数k,输入位置数列next[55],填充初始牌序start[55]: 2 end[next[i]]=start[i]把新的牌序赋值 ...

  2. C#与java的区别(继承,接口实现,指针,编译后形式,异常处理几个方面比较区别)

  3. Bugku 杂项 猜

    猜 说flag是一个人名字的全拼,直接搜图片

  4. Java——开发环境配置

    [1]JDK的安装与卸载 (1)卸载程序         控制面板--添加或删除程序--J2SE Development Kit和J2SE Runtime Envioroment--删除 (2)安装程 ...

  5. 使用 Markdown 写博客

    后台设置(左侧边栏区找到-设置默认编辑器). 设置为 Markdown 后保存,即可在编辑新博客时生效.

  6. Zookeeper w3cschool教程

    1.简介 ZooKeeper是一种分布式协调服务,用于管理大型主机.在分布式环境中协调和管理服务是一个复杂的过程.ZooKeeper通过其简单的架构和API解决了这个问题. ZooKeeper允许开发 ...

  7. mysq访问方式

    mysql -h10.81.32.196 -P5152 -Dns_map_data_new -uwangyuchuan_r -p3DLg15rhSsm0O7Nsselect uid,name from ...

  8. ES6 嵌套数组进行解构

    let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3 let [ , , third] = ["foo&qu ...

  9. Android Build System Ultimate Guide

    Android Build System Ultimate Guide April 8,2013 Lately, Android Open Source Project has gone throug ...

  10. PriorityBlockingQueue 源码分析

    PriorityBlockingQueue PriorityBlockingQueue 能解决什么问题?什么时候使用 PriorityBlockingQueue? 1)PriorityBlocking ...