2314
题⽬描述
种花家有\(N\)朵带有美丽值的花。种花家永远是乐观的,他认为定义一个区间中的花的美丽程度是所有花的美丽值的乘积乘上最大美丽值,现在他想知道所有区间的美丽值之和,答案对\(p\)取模,你能帮帮他吗?
输⼊格式
第一行五个整数\(n,s,l,r,p\),我们将用\(s,l,r\)生成\(N\)个整数,表示花的美丽值\(a_i\)
生成方式如下
namespace GenHelper {
unsigned z1, z2, z3, z4, b;
unsigned rand_() {
b = ((z1 << 6) ^ z1) >> 13;
z1 = ((z1 & 4294967294U) << 18) ^ b;
b = ((z2 << 2) ^ z2) >> 27;
z2 = ((z2 & 4294967288U) << 2) ^ b;
b = ((z3 << 13) ^ z3) >> 21;
z3 = ((z3 & 4294967280U) << 7) ^ b;
b = ((z4 << 3) ^ z4) >> 12;
z4 = ((z4 & 4294967168U) << 13) ^ b;
return (z1 ^ z2 ^ z3 ^ z4);
}
}
void get (int n, unsigned s, int l, int r) {
using namespace GenHelper;
z1 = s;
z2 = unsigned((~s) ^ 0x233333333U);
z3 = unsigned(s ^ 0x1234598766U);
z4 = (~s) + 51;
for (int i = 1; i <= n; i ++) {
int x = rand_() & 32767;
int y = rand_() & 32767;
a[i]=(l + (x * 32768 + y) % (r - l + 1));
}
}
int main() {
int s,l,r; scanf("%d%d%d%d%d",&n,&s,&l,&r,&p);
get(n,s,l,r);
}
输出格式
输出一个整数表示答案。
样例数据
输入1
5 3 4 7 12
输出1
2
数据规模与约定
对于\(20\%\)的数据,\(N\le 300\)
对于\(30\%\)的数据,\(N\le 5000\)
对于另外\(20\%\)的数据,保证\(p\)是质数
对于另外\(30\%\)的数据,\(1\le N\le 10^5\)
对于\(100\%\)的数据,\(1\le N\le 10^7,1\le p\le 10^9,1\le s,l,r\le10^9\)