【推理】UVa 10771 - Barbarian tribes
| Barbarian tribes |
In a lost land two primitive tribes coexist: Gareds and Kekas. Every summer solstice they meet and compete to decide which tribe will be the favorite of the gods for the rest of the year, following an old ritual:
First, a local guru chooses three numbers at random: n, m and k.
Afterwards, n Gared maids (in the positions
1, 2,..., n)
and m Keka maids (in the positions
n + 1, n + 2,..., n + m)
are placed in a circle looking inwards.
Then the guru begins to count
1, 2,..., k starting at the first Gared maid.
When the k-th maid is reached, she is immediately sacrificed to the gods.
The guru then counts again
1, 2,..., k
starting at the maid following the one just sacrificed.
Again, the k-th maid reached this way is sacrificed.
After every two sacrifices,
the second sacrificed maid is replaced by a new maid.
In order to decide the tribe of the new maid,
the guru looks at the heads of the two maids just killed
(nothing else remains of them).
If both heads are of the same tribe, the guru calls a Gared maid.
If the heads are from different tribes, the guru calls a Keka maid.
The process then begins again
(counting and sacrificing twice and replacing once)
starting to count at the maid following the new maid
just added to the circle.
Since the number of maids reduces by one after every step
(of two sacrifices and one replacement),
after n + m - 1 steps only one maid remains.
According to the tradition,
the tribe of the last maid will be the favorite of the gods.
(What the guru does to the last maid is something you don't want to know.)
Anyway, write a program such that,
given n, m and k, writes the name of the fortunate tribe.
For example, this is what happens for n = m = 3 and k = 2
(a ``G'' denotes a Gared maid and a ``K'' denotes a Keka maid;
the subindexes mark the order the maids enter the circle):
- Initial content of the circle: G1 G2 G3 K4 K5 K6
Starting to count at G1.
First sacrifice: G2.
Second sacrifice: K4 (replaced by K7). - Content of the circle: G1 G3 K7 K5 K6
Starting to count at K5.
First sacrifice: K6.
Second sacrifice: G3 (replaced by K8). - Content of the circle: G1 K8 K7 K5
Starting to count at K7.
First sacrifice: K5.
Second sacrifice: K8 (replaced by G9). - Content of the circle: G1 G9 K7
Starting to count at K7.
First sacrifice: G1.
Second sacrifice: K7 (replaced by K10). - Content of the circle: G9 K10
Starting to count at G9.
First sacrifice: K10.
Second sacrifice: G9 (replaced by K11). - Final content of the circle: K11
Input
Input consists of zero ore more test cases.
Each test case consists of a line
with three positive integers: n, m and k.
You can assume
1
n + m
2000 and
1
k
1000.
A test case with
n = m = k = 0 ends the input and must not be processed.
Output
For every test case, print either "Gared" or "Keka" as convenient.
Sample Input
3 3 2
4 2 2
0 1 7
0 0 0
Sample Output
Keka
Gared
Keka 开始以为是约瑟夫环,TLE了...郁闷半天,后来看了题解恍然大悟。自己还是得加强下思维转换。。。
题目大意:给出n,m和k,有n个G,m个K,站成一个圈,现在有个杀手每次走k步,杀掉当前位置的人,每次杀两个人之后如果这两个人都是G或都是K,就用G补上,否则就用K补上。问说最后剩一个谁。
解题思路:在每杀两个人这个地方进行考虑。无非3种情况:杀两G,多一G,杀两K,多一G,杀一G一K,多一K。
注意,杀一G一K,多一K时,K的数目不变,所以K的人数只会以减2的方式减少。如果K一开始是奇数的话是永远减少不完的,最终肯定剩下K。如果一开始是偶数,最终减少完的必然是K,剩下G。
代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int main()
{
int n, m, k;
while(scanf("%d%d%d", &n, &m, &k))
{
if(!n && !m && !k) break;
if(m%) printf("Keka\n");
else printf("Gared\n");
}
return ;
}
【推理】UVa 10771 - Barbarian tribes的更多相关文章
- uva 10771
思路题 K的人数只能以2减少 #include <cstdio> #include <cstdlib> #include <cmath> #include < ...
- UVA 11246 - K-Multiple Free set(数论推理)
UVA 11246 - K-Multiple Free set 题目链接 题意:一个{1..n}的集合.求一个子集合.使得元素个数最多,而且不存在有两个元素x1 * k = x2,求出最多的元素个数是 ...
- uva 1561 - Cycle Game(推理)
option=com_onlinejudge&Itemid=8&page=show_problem&problem=4336" style=""& ...
- UVA 1364 - Knights of the Round Table (获得双连接组件 + 二部图推理染色)
尤其是不要谈了些什么,我想A这个问题! FML啊.....! 题意来自 kuangbin: 亚瑟王要在圆桌上召开骑士会议.为了不引发骑士之间的冲突. 而且可以让会议的议题有令人惬意的结果,每次开会前都 ...
- uva 11892 - ENimEN(推理)
题目链接:uva 11892 - ENimEN 题目大意:给定n堆石子的个数,两人轮流选择石子堆取石子,直到不能取为失败,附加条件,假设前一次操作,即队手的操作,没有将选中石子堆中的石子取完,那么当前 ...
- 【推理,贪心】UVa 1319 - Maximum
看到了大神的代码.理解了好久...真是差距. 题意:给出m, p, a, b,然后xi满足已下两个公式, 求 xp1 + xp2 +...+ xpm 的最大值. 1.-1/sqrt(a) <= ...
- 【置换,推理】UVa 1315 - Creaz tea party
Dsecription n participants of «crazy tea party» sit around the table. Each minute one pair of neighb ...
- UVa 1614 Hell on the Markets (贪心+推理)
题意:给定一个长度为 n 的序列,满足 1 <= ai <= i,要求确实每一个的符号,使得它们和为0. 析:首先这一个贪心的题目,再首先不是我想出来的,是我猜的,但并不知道为什么,然后在 ...
- UVA 11774 - Doom's Day(规律)
UVA 11774 - Doom's Day 题目链接 题意:给定一个3^n*3^m的矩阵,要求每次按行优先取出,按列优先放回,问几次能回复原状 思路:没想到怎么推理,找规律答案是(n + m) / ...
随机推荐
- 把之前写的几个项目放到了github上
之前有的源码放在我的电脑里不知道什么时候就没了,满满都是回忆啊,怪可惜的. https://github.com/redclock/Adv-Game:一个java游戏 https://github.c ...
- log4net使用的一点心得
关于使用log4net的文章很多,把自己在使用中查到的文章列一下. log4net 可以存在很多地方 比如console,数据库.邮箱.文本等等.我要实现的是 所有的日志都记录到html文件中,可以按 ...
- Esper系列(十三)Splitting and Duplicating Streams
功能:将同一个事件流分发到其它的事件流中. 格式: 1 ; i < events.length; i++) { 78 EventBean event = even ...
- Hive基础介绍
HIVE结构 Hive 是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机 ...
- 初识cocos2d-x-从环境配置到整体框架
前言 ACM生涯在带着些许遗憾中结束了.春招的时候找了一份游戏开发的工作,现在学习cocos2dx中. 从ACM竞赛到实际项目开发的学习,第一感觉就是不适应,虽然感觉实际项目的确要比ACM简单的多.最 ...
- INPUT输入框灰体提示
INPUT输入框灰体提示 <input type="text" value='15 words limit' style="color:#999999" ...
- Genymotion与本地电脑共享文件夹的方法
首先打开vbox的界面,左侧列表应该可以看到Genymotion添加的虚拟机,如图:对要设置的虚拟机单击右键,在弹出的菜单中点击“设置...”,弹出设置页面后点击左侧最后一个标签“共享文件夹”,点击右 ...
- Ubuntu下非常给力的下载工具
Windows下的下载工具--迅雷,之所以下载速度快,乃是它能搜索资源.为己所用,而不是仅仅从原始地址这单一资源处下载. Ubuntu下也有类似的工具,那就是aira2. aira2是一个命令行下载工 ...
- Swipe2.1更新——移动Web内容滑块
Swipe JS 是一个轻量级(3.7 kb) mobile slider,支持 1:1 触摸移动(基于精确的触摸位置的内容滑动). 但是我使用一段时间后发现两个bug,所以在官方2.0(官网http ...
- cocos2d-x3.1.1 step by step 学习笔记1----- 软件的安装与HelloWord
1:软件安装 系统:WIn7 软件:VS2012.cocosd-x3.1.1.python2.6.7.doxygen <1>首先安装VS2012,安装也是傻瓜式安装, <2>然 ...