一群魔法师围城了一个圈,其中一半好魔法师一半坏魔法师,前一半为好魔法师后一半为坏魔法师,求当k为多少时可以杀死全部的坏魔法师。
【输入格式】
一个正整数M表示分别有多少个好魔法师和坏魔法师。
【输出格式】
一个正整数,即表示在杀死第一个好魔法师杀死所有坏魔法师最小的K。
【样例输入】
3
【样例输出】
5
s为下一个要杀死的报数者的序号,t为总人数,因为每一次报数都会有一个人死亡,所以t每轮都要减1,s也要随之减1,而且每一次的所报的数超过总人数,都要取余,所以可以得出s=(s~x - 1~+K)%t;
假设K=7,t=8;如表6.3所示。
s0 | s1 | s2 | s3 | s4 | s5 | s6 | s7 |
---|---|---|---|---|---|---|---|
0 | 6 | 5 | 5 | 1 | 3 | … | … |
//杀死坏人
#include<iostream>
using namespace std;
int jo(int m,int k)
{
int s=0,t