fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //#define int long long
  4. const int maxn = 1e7+5;
  5. const int mod = 1e9 + 7;
  6. const int oo = 2e9+5;
  7. typedef pair<int, int> ii;
  8. typedef pair<int, pair<int, int>> iii;
  9. #define fi first
  10. #define se second
  11. #define read(_a, n) for(int i = 1; i <= n; i++) cin >> _a[i]
  12. #define For(i, _a, _b) for(int i = _a; i <= _b; i++)
  13. #define bit(x, i) ((x >> (i)) & 1)
  14. #define bat(x, i) (x (1 << (i)))
  15.  
  16. int f[maxn], m, n;
  17. long long a[100005];
  18. long long res;
  19.  
  20. long long cal(int x)
  21. {
  22. long long res = 0;
  23. if(x&1) res = ((x+1)/2) % m * x;
  24. else res = (x/2)%m * (x+1);
  25. res %= m; res = (res*x)%m;
  26. res = (res + f[x+1] - 1)%m;
  27. return res;
  28. }
  29.  
  30. int32_t main()
  31. {
  32. ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  33. if(fopen("main.inp", "r"))
  34. {
  35. freopen("main.inp", "r", stdin);
  36. // freopen("main.out", "w", stdout);
  37. }
  38. cin >>n >> m;
  39. f[1] = 1;
  40. For(i, 2, m)
  41. {
  42. long long p = 1ll*f[i-1]*i % m;
  43. f[i] = p;
  44. }
  45. For(i, 1, n) cin >> a[i], res += cal(a[i]), res%= m;
  46. cout << res;
  47. }
  48.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty