1 条题解
-
0吴思远 (wusiyuan2) LV 6 @ 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
- 标签
- 递交数
- 81
- 已通过
- 13
- 上传者