A Random Code Problem

题意翻译

给你一个数组 $a$ 和一个整数 $k$ ,执行下面的代码: ```cpp long long ans = 0; //定义一个初始值为 0 的长整型变量 for(int i = 1; i <= k; i++) { int idx = rnd.next(0, n - 1); //生成一个介于0到n-1的随机数(含 0 和 n-1) //每个数被选中的概率是相同的 ans += a[idx]; a[idx] -= (a[idx] % i); } ``` 您需要在执行此代码后计算变量 $ans$ 的期望。 数组 $a$ 是输入时根据特殊规则生成的。 【输入格式】 仅一行,六个整数 $n$ , $a_0$ , $x$ , $y$ , $k$ 和 $M$ 。 数组 $a$ 由以下规则生成: * $a_0$ 由输入给出 * 对于 $a_1$ 至 $a_{n-1}$,$a_i=(a_{i-1}\times x+y)\bmod M$。 【输出格式】 令 $E$ 为 $ans$ 的期望,输出 $E\times n^k$,对 $998244353$ 取模。 【数据范围】 $1\le n\le10^7$ $1\le a_0,x,y<M\le998244353$ $1\le k\le17$

题目描述

You are given an integer array $ a_0, a_1, \dots, a_{n - 1} $ , and an integer $ k $ . You perform the following code with it: ``` <pre class="lstlisting">``` long long ans = 0; // create a 64-bit signed variable which is initially equal to 0<br></br>for(int i = 1; i <= k; i++)<br></br>{<br></br> int idx = rnd.next(0, n - 1); // generate a random integer between 0 and n - 1, both inclusive<br></br> // each integer from 0 to n - 1 has the same probability of being chosen<br></br> ans += a[idx];<br></br> a[idx] -= (a[idx] % i);<br></br>}<br></br> ``` ``` Your task is to calculate the expected value of the variable ans after performing this code. Note that the input is generated according to special rules (see the input format section).

输入输出格式

输入格式


The only line contains six integers $ n $ , $ a_0 $ , $ x $ , $ y $ , $ k $ and $ M $ ( $ 1 \le n \le 10^7 $ ; $ 1 \le a_0, x, y < M \le 998244353 $ ; $ 1 \le k \le 17 $ ). The array $ a $ in the input is constructed as follows: - $ a_0 $ is given in the input; - for every $ i $ from $ 1 $ to $ n - 1 $ , the value of $ a_i $ can be calculated as $ a_i = (a_{i - 1} \cdot x + y) \bmod M $ .

输出格式


Let the expected value of the variable ans after performing the code be $ E $ . It can be shown that $ E \cdot n^k $ is an integer. You have to output this integer modulo $ 998244353 $ .

输入输出样例

输入样例 #1

3 10 3 5 13 88

输出样例 #1

382842030

输入样例 #2

2 15363 270880 34698 17 2357023

输出样例 #2

319392398

说明

The array in the first example test is $ [10, 35, 22] $ . In the second example, it is $ [15363, 1418543] $ .