改题限制了l和n的大小,实际上l和n可以取无限大,很多人可能会想着开一个500000以上的数组,其实两个变量就解决问题了,时间复杂度是O(n),空间复杂度是O(1);
关键思路:
long long A;
long long sum;
int i;
A = 0;
sum = 0;
for(i = 0;i < n;i++)
{
A = (A*m+z)%l;
sum = sum^A;
}
printf("%d\n",2*sum);
时间: 2024-09-30 06:10:51