题目四
- A Random Code Problem
原题链接:https://codeforces.com/problemset/problem/1626/F
题目翻译:
你会得到一个数组,和一个数字k。你可以运行如下代码。
long long ans = 0; // create a 64-bit signed variable which is initially equal to 0
for(int i = 1; i <= k; i++)
{
int idx = rnd.next(0, n - 1); // generate a random integer between 0 and n - 1, both inclusive
// each integer from 0 to n - 1 has the same probability of being chosen
ans += a[idx];
a[idx] -= (a[idx] % i);
}
你的任务是计算变量ans在运行代码结束之后期待的值。注意输入是由特殊的输入规则产生的。(见输入格式部分)
输入:只有一行包含六个数字 n, a0, x, y, k 和 M (1≤n≤107; ,1≤a0,x,y<M≤998244353;1≤k≤17).
数组a在输入中是按如下标注建立的:a0在输入中已经给出来了。对于接下来的每一个ai,都可以通过计算得出 ai=(ai−1⋅x+y)modM.
输出:让期待的值在变量ans运行完代码后成为E。他可以体现E乘n的k次方是一个常数。你必须按模的998244353输出结果。
例子:
3 10 3 5 13 88
382842030
2 15363 270880 34698 17 2357023
319392398
注意:第一个例子中的测试数组是[10,35,22];第二个是 [15363,1418543].