1 条题解

  • 0
    @ 2022-8-10 14:58:15
    /********************
    备注:
    ********************/
    #include <map>
    #include <queue>
    #include <stack>
    #include <math.h>
    #include <vector>
    #include <iomanip>
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    #define LL long long
    const int N = 2e7+10;
    const int INF = 0x3f3f3f3f;
    int ans;
    int n , k , p , a , b , c , d;
    int s[N] , f[N] , g[N];
    int main()
    {
    	scanf("%d%d%d%d%d%d%d" , &n , &k , &p , &a , &b , &c , &d);
    	s[1] = a;
    	for(int i = 2 ; i <= n ; i++)
    		s[i] = ((LL)s[i-1] * b + c) % d;
    	for(int i = 1 ; i <= n ; i++)
    		if((i-1) % k == 0)
    			f[i] = s[i];
    		else
    			f[i] = (LL)f[i-1] * s[i] % p;
    	g[n+1] = 1;
    	for(int i = n ; i ; i--)
    		if(i % k == 0)
    			g[i] = s[i];
    		else
    			g[i] = (LL)g[i+1] * s[i] % p;
    	for(int i = 1 ; i+k-1 <= n ; i++)
    		if((i-1) % k == 0)
    			ans ^= g[i];
    		else
    			ans ^= (LL)f[i+k-1] * g[i] % p;
    	printf("%d\n" , ans);
     	return 0;
    }
    • 1

    信息

    ID
    2652
    时间
    2100ms
    内存
    233MiB
    难度
    8
    标签
    递交数
    78
    已通过
    13
    上传者