SRM147 DIV1 350
约瑟夫环问题,直接模拟即可,找出被开除的前femaleNum个人的位置,利用这个位置信息构造字符串即可

1 class PeopleCircle: 2 def order(self, numMales, numFemales, k): 3 a = [] 4 s = ['M'] * (numMales+numFemales) 5 for i in range(0, numMales+numFemales): 6 a.append(i) 7 begin = 0 8 for i in range(0, numFemales): 9 next = (begin + k - 1) % len(a) 10 s[a.pop(next)] = 'F' 11 if next == len(a): 12 begin = 0 13 else: 14 begin = next 15 16 result = '' 17 for ch in s: 18 result += ch 19 return result 20 21 # test 22 o = PeopleCircle() 23 24 # test: len = 0 25 assert(o.order(0, 0, 555) == '') 26 27 # test 28 assert(o.order(5, 3, 2) == "MFMFMFMM") 29 print('ok')
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步