#P09005. 约瑟夫问题

约瑟夫问题

题目背景

据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,3939 个犹太人与Josephus及他的朋友躲到一个山洞中,3939 个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,4141 个人排成一个圆圈,由第 11 个人开始报数,每报数到第 33 人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。Josephus要他的朋友先假装遵从,他将朋友与自己安排在第 1616 个和第 3131 个位置,于是逃过了这场死亡游戏。

题目描述

将问题简化,nn 个人围成一个圆圈,每个人的编号依次是 123n1、2、3、……、n。从第一个人开始数数,数到 mm 的人出圈。然后由出圈的下一个人重新数数,数到 mm 的人又出圈……

记第 ii 个出圈人的姓名为 nameiname_i,性别为 sexisex_i,那么可以产生一个字符串 S1S1

$name_1 \enspace sex_1 \enspace name_2 \enspace sex_2 \enspace ... \enspace sex_{n-1} \enspace name_n \enspace sex_n \enspace name_1$

对于姓名字符串 namename ,记 f(name)f(name) 为字符串 namename 每个字符的序号的累加和(aaAA 的序号都是 00,其他字母依次类推),例如 f("Abc")=3f(\verb|"Abc"|)=3

记 $T = \sum\limits_{i=1}^{n}f(name_i) = f(name_1)+f(name_2)+...+f(name_n)$。

对于性别字符串 sexsex,记 g(sex)g(sex) 为按照下述规则转换成的字符串:如果 sexsexMale 则转换为 +,否则转换为 *,可知 g("Male")="+"g(\verb|"Male"|)=\verb|"+"|g("Female")="*"g(\verb|"Female"|)=\verb|"*"|

由上述计算规则,可知由字符串 S1S1 可以衍生出来新的字符串 S2S2

$f(name_1) \enspace g(sex_1) \enspace f(name_2) \enspace g(sex_2) \enspace ... \enspace g(sex_{n-1}) \enspace f(name_n) \enspace g(sex_n) \enspace f(name_1)$

易知 S2S2 是一个计算表达式。请你计算出这个表达式的结果,因为结果可能很大,你只需要输出这个结果 %T\%T 的最终结果。

需要特别注意的是,mm 可能远大于 nn

输入格式

11 行是两个正整数 n,mn,m

紧接着有 nn 行,依次是编号从 11 开始的 nn 个人的姓名和性别,姓名和性别都是不包含空格且长度不超过 1010 的字符串(只会出现大小写英文字母),性别只会是 MaleFemal 中的一种,两者之间用一个空格隔开。

输出格式

一共 22 行:

第一行是按照规则产生的表达式,需要注意的是运算符号和数字之间用一个空格隔开;

第二行是 22 个整数,分别是题目中的 TT 和最终计算结果,两者之间用一个空格隔开。

输入输出样例

5 3
Jerry Male
Jack Male
Lucy Femal
Tim Male
Sara Femal
57 * 71 + 35 * 21 + 39 + 57
223 195

样例说明

对于输入样例,依次出圈的人的信息如下(分别是序号、姓名、性别):

3 Lucy Femal
1 Jerry Male
5 Sara Femal
2 Jack Male
4 Tim Male

产生的原字符串 S1S1 是:

Lucy Femal Jerry Male Sara Femal Jack Male Tim Male Lucy

由题意,可知: f("Lucy")=57,f("Jerry")=71,f("Sara")=35,f("Jack")=21,f("Tim")=39

按照规则转换出的计算表达式 S2S2 是:57 * 71 + 35 * 21 + 39 + 57,计算结果是 4878

由题意,可知 T = 57 + 71 + 35 + 21 + 39 = 223,所以最终结果是 4878 % 223 = 195

说明/提示

👀️ 对于100%100\%的数据,1n10001m1081 \leq n \leq 1000,1 \leq m \leq 10^8