#P5495. 【模板】Dirichlet 前缀和
【模板】Dirichlet 前缀和
题目背景
模板题,无背景。
题目描述
给定一个长度为 的数列 。
现在你要求出一个长度为 的数列 ,满足
由于某些神秘原因,这里的 要对 取模。
输入格式
为了避免过大的输入,本题的输入使用随机数生成器。
输入中只有一行两个整数 。其中 为 位无符号整数,用来生成数据。
接下来,你要调用 次随机数生成器,分别生成 。
对于C/C++
选手,生成器模板如下:
#define uint unsigned int
uint seed;
inline uint getnext(){
seed^=seed<<13;
seed^=seed>>17;
seed^=seed<<5;
return seed;
}
对于Pascal
选手,生成器模板如下:
var seed:dword;
function getnext:dword;
begin
seed:=seed xor(seed shl 13);
seed:=seed xor(seed shr 17);
seed:=seed xor(seed shl 5);
getnext:=seed;
end;
注意:所有 个数均为 位无符号整数。
输出格式
为了避免过大的输出,你只需输出一个 位无符号整数,表示所有 的异或和。
5 1477
2608816472
提示
样例中,数列 为 $397153977, 974453892, 352446086, 334987182, 2086335567$。
数列 为 $397153977, 1371607869, 749600063, 1706595051, 2483489544$。
限制与约定
对于 的数据, ,。