模拟约瑟夫环

 Roman Roulette 

The historian Flavius Josephus relates how, in the Romano-Jewish conflict  of 67 A.D., the Romans took the town of Jotapata which he was commanding.   Escaping, Jospehus found himself trapped in a cave with 40 companions.  The  Romans discovered his whereabouts and invited him to surrender, but his  companions refused to allow him to do so.  He therefore suggested that they  kill each other, one by one, the order to be decided by lot.  Tradition has it  that the means for effecting the lot was to stand in a circle, and, beginning  at some point, count round, every third person being killed in turn.  The  sole survivor of this process was Josephus, who then surrendered to the  Romans.  Which begs the question: had Josephus previously practised quietly  with 41 stones in a dark corner, or had he calculated mathematically that he  should adopt the 31st position in order to survive?

Having read an account of this gruesome event you become obsessed with  the fear that you will find yourself in a similar situation at some time in  the future.  In order to prepare yourself for such an eventuality you decide  to write a program to run on your hand-held PC which will determine the  position that the counting process should start in order to ensure that you  will be the sole survivor.

In particular, your program should be able to handle the following variation  of the processes described by Josephus.  n > 0 people are initially  arranged in a circle, facing inwards, and numbered from 1 to n.  The  numbering from 1 to n proceeds consecutively in  a clockwise direction.   Your allocated number is 1.  Starting with person number i, counting  starts in a clockwise direction, until we get to person number k (k > 0),  who is promptly killed.  We then proceed to count a further k people in a  clockwise direction, starting with the person immediately to the left of the  victim.  The person number k so selected has the job of burying the  victim, and then returning to the position in the circle that the victim had  previously occupied.  Counting then proceeds from the person to his  immediate left, with the kth person being killed, and so on, until only one  person remains.

For example, when n = 5, and k = 2, and i = 1, the order of execution is  2, 5, 3, and 1.  The survivor is 4.

Input and Output

Your program must read input lines containing values for n and k (in  that order), and for each input line output the number of the person with  which the counting should begin in order to ensure that you are the sole  survivor.  For example, in the above case the safe starting position is 3.   Input will be terminated by a line containing values of 0 for n and k.

Your program may assume a maximum of 100 people taking part in this  event.

Sample Input

1 1
1 5
0 0

Sample Output

1
1

UVa 130 - Roman Roulette的更多相关文章

  1. Roman Roulette(约瑟夫环模拟)

    Roman Roulette Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  2. UVA - 185 Roman Numerals

    题目链接: https://vjudge.net/problem/UVA-185 思路: 剪枝.回溯 注意回溯的时候,是从当前点的下一个开始,而不是从已经遍历的个数点开始!!不然回溯有问题! 思路参考 ...

  3. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  4. python随机数学习笔记

    #coding:utf-8 import random # random.randint(1,10)产生1,10的随机整数 for i in range(1,5): ranint = random.r ...

  5. ascii码所有字符对照表(包含汉字和外国文字)

    http://www.0xaa55.com/thread-398-1-1.html看到了0xaa55的这个帖子,想起了2年前我在51cto发的一个帖子http://down.51cto.com/dat ...

  6. uva 759 - The Return of the Roman Empire

    #include <cstdio> #include <string> #include <map> using namespace std; ; , , , , ...

  7. UVA 590 二十一 Always on the run

     Always on the run Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit ...

  8. UVa 10048: Audiophobia

    这道题要求我们求出图中的给定的两个节点(一个起点一个终点,但这是无向图)之间所有“路径中最大权值”的最小值,这无疑是动态规划. 我开始时想到根据起点和终点用动态规划直接求结果,但最终由于题中S过大,会 ...

  9. [uva] 10067 - Playing with Wheels

    10067 - Playing with Wheels 题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Ite ...

随机推荐

  1. SGU 120 Archipelago (简单几何)

    120. Archipelago time limit per test: 0.25 sec.  memory limit per test: 4096 KB Archipelago Ber-Isla ...

  2. laravel 5.1 的程序性能优化(配置文件)

    命令优化 本文的目的是来弄清楚一些优化命令在 Laravel 5.1 和之前版本之间的差别. 在 15年6月发布的 Laravel 5.1版本中, 命令和他们的逻辑方法被清理掉, 本文章就是描述这些不 ...

  3. JPA多对多关联

    关于JPA多对多关系,这是使用学生与教师来表示.一个Student由多个Teacher教,同样一个Teacher也可以教多个学生.Student类如下: package com.yichun.bean ...

  4. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  5. (转)YV12 and NV12

    用videoCapture和IAMStreamConfig拿到的支持的格式列表.发现支持2中图像格式,YV12和NV12.具体是怎么样的内存分布不知道.查了些文档.自己修改了几个图.看出了点端倪 YV ...

  6. html中可以自定义属性,,,妈的竟然才知道..

    html中可以自定义属性,,,妈的竟然才知道.. <input userinfo="没见过帅哥呀" />

  7. mac Virtualbox Ubuntu 设置共享目录

    如果要用VirtualBox自带的共享文件夹功能,必须先安装Guest Additions.安装方法:置顶的菜单条->devices->Install Guest Additions.点击 ...

  8. 如何在浏览器控制台(console)里输出彩色样式调试信息

    console.log(XX,XX,XX) log 的第一个参数声明第二.第三个参数的作用,第二个参数就是样式,第三个参数是要输出的字符串 console.log("%c%s", ...

  9. 如何在ChemDraw中绘制分子立体结构

    ChemDraw是当前最常用的的化学结构绘图软件,软件功能包括化学作图.分子模型生成.化学数据库信息管理等,可以说是化学家和生物学家所需要最终极的化学结构绘图工具.本教程主要介绍ChemDraw绘制分 ...

  10. SVN入门 TortoiseSVN 检出

    1. SVN检出(SVN Checkout) 检出项目文件. 新建或者进入目录下(比如qianduan1),右键 --> Svn 检出-->其中版本库URL我可以在SVN服务器获取到,将复 ...