内容正文:
专题20 约瑟夫问题
1.任意一个数x Mod n值的范围是[__________]。
2.模型一:在一个0~n-1编号的位置中,从当前位置p向后移动k个位置,移动后的位置还是用0~n-1编号,可以用VB表达式_______________来表示移动后的位置。
3.模型二:在一个1~n编号的位置中,从当前位置p向后移动k个位置,移动后的位置还是用1~n编号,由于区间[1,n]可以用[0,n-1]+____来表示,因此可以用VB表达式____________________来表示移动后的位置。
4.模型三:在环中循环向前移到位置k,即每次均要减去k,为保证被除数不为负数,需将被除数增加____,再进行Mod n运算。
0,n-1
(p+k) Mod n
1
(p+k-1) Mod n+1
n
2
5.在一个0~n-1编号的位置中,从当前位置p向前移动k个位置,移动后的位置还是用0~n-1编号,可以用VB表达式________________来表示移动后的位置。
6.在一个1~n编号的位置中,从当前位置p向前移动k个位置,移动后的位置还是用1~n编号,由于区间[1,n]可以用[0,n-1]+1来表示,因此可以用VB表达式______________________来表示移动后的位置。
(p-k+n) Mod n
(p-k-1+n) Mod n+1
考点一 在区间[0,n-1]之间往后循环遍历各元素
由于任意数Mod n的范围是[0,n-1],因此可以直接采用Mod运算。如一天可以分为24小时,分别用0点~23点表示。
p的初值 经历时长(k) 结果时间p VB表达式
p=18时 3小时后 21 p=(p+k) Mod n
6小时后 0
38小时后 8
4
【例1】 对一段字符加密,加密规则为:①字母和数字都往后循环顺移3位,如“a”变为“d”,“y”变为“b”;“0”变为“3”,“7”变为“0”,②加密后字母在前,数字在后,③字母按逆序排列,数字按顺序排列,如输入明文“a1b7z8x3”,这密文为“aced4016”。 程序运行界面如图所示。实现上述功能的VB程序如下。
(1)根据加密规则,明文“9x7b”,则密文为__________。
(2)请在划线处填入合适的代码:
Private Sub Com_jm_Click()
Dim x As Stri