#P14825. [Bulgarian2015组队赛]SuperMario

[Bulgarian2015组队赛]SuperMario

题目描述

Eli 正在玩一个修改版的 Super Mario 游戏。在这个游戏中,她需要穿过 NN 个格子,可以踩在其中一些格子上。她从最左边格子之前开始,当走到最右边格子之后时结束。

每一步,玩家只能从当前位置向右跳 11KK 个格子的距离。每当踩到某个格子时,需要支付该格子的价格 CiC_i,每个格子的价格预先已知。

例如,某一关有 66 个格子,从左到右价格为:

(2,3,6,1,2,7)(2,3,6,1,2,7)

最大跳跃长度为 K=2K=2。第一步只能跳到第一个或第二个格子,分别支付 2233。Eli 会选择第二个格子,虽然支付更高价格,但能到达更靠右的位置。接着她跳到第四个格子(支付 11),再跳到第五个格子(支付 22),最后跳出棋盘。总价格为 66,这也是该关能达到的最小值。

Eli 想在游戏所有关卡中创造纪录,以给 Stancho 留下深刻印象。请帮助她编写程序 supermario,求最优路径的价格。

输入格式

第一行输入两个整数 N,KN,K,分别表示格子数量和最大跳跃长度。

第二行输入四个整数 F,A,B,MF,A,B,M,用于生成每个格子的价格:

  • 第一个格子的价格为 C1=FC_1=F
  • 对于每个 i=2,,Ni=2,\dots,N
Ci=(Ci1A+B)modM.C_i=(C_{i-1}\cdot A+B)\bmod M.

输出格式

输出一行一个整数,表示 Eli 通过该关卡所需支付的最小总和。

数据范围

  • 1N100000001 \le N \le 10000000
  • 1K10000001 \le K \le 1000000
  • 1M10000000071 \le M \le 1000000007
  • 0F,A,B<M0 \le F,A,B<M
  • 30%30\% 的测试中,N5000N \le 5000
  • 60%60\% 的测试中,N1000000N \le 1000000

样例

输入

20 5
7 3 8 23

输出

18

样例解释

格子上的数字从左到右为:

7 6 3 17 13 1 11 18 16 10 15 7 6 3 17 13 1 11 18 16

最优路径经过下标为 3,6,10,14,173,6,10,14,17 的格子,贡献分别为:

3+1+10+3+1=18.3+1+10+3+1=18.

随后跳出棋盘,因此答案为 1818