问题 5966 --6、最小伤害

5966: 6、最小伤害

题目描述

  有n+1个箱子从左往右排成一行,编号从0至n 。一开始你在第0个箱子,你的目标是到达第n个箱子。你可以通过跳跃来完成目标,每一步你的跳跃距离不能超过L,你可以选择向左跳,也可以选择向右跳,你任何时刻都不能跳出边界。每当你落在第i个箱子上面,你会受到T[i]点伤害值。求为了完成任务,至少会受到多少伤害值。伤害值用如下的公式产生: T[0] = 0 state = seed for i = 1 to N: state = (state * 1103515245 + 12345) % 2^31 T[i] = 1 + (state % M)

输入

多组测试数据。 第一行,一个整数G,表示有G组测试数。1<=G<=3。 每组测试数据格式如下: 一行,4个整数:n, L, seed,M。 1<=n<=500000,1<=L<=500000,0<=seed<2^31, 1<=M<=10^9。

输出

共G行,每行一个整数。

样例输入输出

输入#1 复制
3
8 3 47 10
100 1 47 123456789
5 5 12345 54321
输出#1 复制
17
5835166389
46038

提示

序号 标题 作者 发表时间 费用 订购数 操作