#P1993. 点数计算

点数计算

题目描述

小 i 是一位日麻爱好者,而日麻点数计算却往往让他头大。

麻将是一个四个人玩的游戏,每个人有一个位置,分别为 西 其中的一个,当前位置为东的人将作为庄家,其余位置的人则成为闲家。一家和牌时将会按照规则收取点数,而当庄家和牌时收取的点数需要再次基础上乘 1.51.5 倍。

日麻的点数计算规则是这样的: 日麻中与点数计算有关的变量为牌型的番数和符数,当番数大于等于 55 时,和牌收取的点数与符数无关,具体如下:

当闲家和牌时:

55 番:80008000 点(满贯)

66~77 番:1200012000 点(跳满)

88~1010 番:1600016000 点(倍满)

1111~1212 番:2400024000 点(三倍满)

1313 番及以上:3200032000 点(役满)

和牌的方式有两种,一种是荣和,一种是自摸。荣和即是和别人打出的牌,此时所有的点数由打出这张牌的人支付(即放铳者),而自摸时获取的点数需要其他三家共同支付。

当闲家自摸时(即非庄家),庄家需要支付和牌点数的 12\frac{1}{2},其余两家各支付 14\frac{1}{4},而当庄家自摸时,其他所有人都要支付点数的 13\frac{1}{3},即庄家和牌无论自摸还是荣和都会有 1.51.5 倍的收益。

即当庄家自摸了一副 66 番跳满的牌,那么每家需要向庄家支付 60006000 点,庄家一共收取 1800018000 点(12000×1.512000 \times 1.5)。

而如果闲家荣和了一副 66 番跳满的牌,那么就由放铳者单独支付 1200012000 点。

如果番数不足 55 番,那么将会计算符数,符数由两部分构成,一部分是和牌时的底符,另一部分是牌型的额外符数。

自摸的底符为 2020 符,荣和的底符则为 3030

底符与牌型的额外符数相加,然后向上取整到十位即为最终符数。

而闲家此时收取的点数为:a×2b+4a\times 2^{b + 4},其中 aa 代表符数,bb 代表番数。

这个点数计算出来不能超过 80008000 点,如果超过了 80008000 点,则视为 80008000 点(庄家的额外点数不包括其中)。

另外需要注意的是,在进行点数交换的时候,最小的点数为 100100 点,如果你需要交付的点数不是 100100 的倍数,那么需要向上取整到 100100 的倍数。

比如闲家自摸了一个一番额外符数 22 符的牌,那么这副牌的符数计算如下: 20+2=2220 + 2 = 22,向上取整得到最终符数为 3030 符。

那么此时闲家应收取的点数为 30×25=96030 \times 2^{5} = 960,那么对应的点数变化为:

从庄家收取 9602=480\frac{960}{2} = 480 点,向上取整得 500500 点。

从另外两家每家收取 9604=240\frac{960}{4} = 240 点,向上取整得 300300 点。

所以实际上此时闲家共收获了 500+300+300=1100500 + 300 + 300 = 1100 点。

给定小 i 的位置 pp(0/1/2/3分别表示 西)和他和牌的番数 bb 以及牌型的额外符数 ff 和和牌方式 dd(0/1 代表 自摸/荣和),你需要告诉小 i 他将获得多少点数。

注意,不保证输入的番数和符数一定能找出对应的牌型(比如一番20符),计算理论得点即可。

输入格式

输入包含 4 个整数分别代表 ppbbffdd

0p30 \leq p \leq 3

1b601 \leq b \leq 60

0f1100 \leq f \leq 110

0d10 \leq d \leq 1

输出格式

输出一个整数代表小 i 实际将收取多少点数。

样例

1 1 2 0
1100
0 6 0 1
18000
0 15 2 0
48000