#P1993. 点数计算
点数计算
题目描述
小 i 是一位日麻爱好者,而日麻点数计算却往往让他头大。
麻将是一个四个人玩的游戏,每个人有一个位置,分别为 东
,南
,西
,北
其中的一个,当前位置为东的人将作为庄家,其余位置的人则成为闲家。一家和牌时将会按照规则收取点数,而当庄家和牌时收取的点数需要再次基础上乘 倍。
日麻的点数计算规则是这样的: 日麻中与点数计算有关的变量为牌型的番数和符数,当番数大于等于 时,和牌收取的点数与符数无关,具体如下:
当闲家和牌时:
番: 点(满贯)
~ 番: 点(跳满)
~ 番: 点(倍满)
~ 番: 点(三倍满)
番及以上: 点(役满)
和牌的方式有两种,一种是荣和,一种是自摸。荣和即是和别人打出的牌,此时所有的点数由打出这张牌的人支付(即放铳者),而自摸时获取的点数需要其他三家共同支付。
当闲家自摸时(即非庄家),庄家需要支付和牌点数的 ,其余两家各支付 ,而当庄家自摸时,其他所有人都要支付点数的 ,即庄家和牌无论自摸还是荣和都会有 倍的收益。
即当庄家自摸了一副 番跳满的牌,那么每家需要向庄家支付 点,庄家一共收取 点()。
而如果闲家荣和了一副 番跳满的牌,那么就由放铳者单独支付 点。
如果番数不足 番,那么将会计算符数,符数由两部分构成,一部分是和牌时的底符,另一部分是牌型的额外符数。
自摸的底符为 符,荣和的底符则为 。
底符与牌型的额外符数相加,然后向上取整到十位即为最终符数。
而闲家此时收取的点数为:,其中 代表符数, 代表番数。
这个点数计算出来不能超过 点,如果超过了 点,则视为 点(庄家的额外点数不包括其中)。
另外需要注意的是,在进行点数交换的时候,最小的点数为 点,如果你需要交付的点数不是 的倍数,那么需要向上取整到 的倍数。
比如闲家自摸了一个一番额外符数 符的牌,那么这副牌的符数计算如下: ,向上取整得到最终符数为 符。
那么此时闲家应收取的点数为 ,那么对应的点数变化为:
从庄家收取 点,向上取整得 点。
从另外两家每家收取 点,向上取整得 点。
所以实际上此时闲家共收获了 点。
给定小 i 的位置 (0/1/2/3分别表示 东
,南
,西
,北
)和他和牌的番数 以及牌型的额外符数 和和牌方式 (0/1 代表 自摸/荣和),你需要告诉小 i 他将获得多少点数。
注意,不保证输入的番数和符数一定能找出对应的牌型(比如一番20符),计算理论得点即可。
输入格式
输入包含 4 个整数分别代表 ,,,。
输出格式
输出一个整数代表小 i 实际将收取多少点数。
样例
1 1 2 0
1100
0 6 0 1
18000
0 15 2 0
48000