#593. 取模优化
取模优化
题目背景
2024 年 8 月 2 日,某位同学在 2024 杭电多校 R5 T4 树论(一)一题种非常熟练地使用了一个广为人知的算法求 。
然后呢?
;
;
最终,他因此没能与理想的 排名 达成契约。
小 F 衷心祝愿大家不再重蹈覆辙。
题目描述
给定 个整数,求 $(\sum\limits_{i=1}^n\sum\limits_{j=1}^n a_i\times a_j) \bmod p$ 的结果。
为了避免读入效率的影响, 个整数将根据随机种子使用数据生成器生成,在你的代码里使用 read()
读入。
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 srand(unsigned x)
{using namespace GenHelper;
z1=x; z2=(~x)^0x233333333U; z3=x^0x1234598766U; z4=(~x)+51;}
int read()
{
using namespace GenHelper;
int a=rand_()%32767;
int b=rand_()%32767;
return (a+b)%32767;
}
在你的程序输入 前,调用 srand(s)
。
注意本题特殊的时空限制。
输入描述
一行两个正整数 分别表示整数个数,模数和随机种子。
输出描述
一行一个整数表示答案。
输入样例
4 7 3
输出样例
0
提示
数据点 | 数据范围 | 时空限制 |
---|---|---|
$n=5\times 10^7,p=18446744073709551616,1\le s\le 10^9$ | ||