Iamtui1010

trinnum

Nov 10th, 2021
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. //#include<bits/stdc++.h>
  2. #include<iostream>
  3. #include<fstream>
  4. #include<vector>
  5. #include<algorithm>
  6.  
  7. #define long long long
  8. #define nln '\n'
  9.  
  10. const long N = 1e6+10, M = 3*1e3+10;
  11.  
  12. using namespace std;
  13.  
  14. // Global variables: n, a, c
  15.  
  16. long n, m;
  17. vector<long> a, c;
  18.  
  19. void data()
  20. {
  21.     cin >> n >> m;
  22.     vector<long> tem;
  23.     for (long i = 0; i != n; ++i)
  24.     {
  25.         long x;
  26.         cin >> x;
  27.         x %= m;
  28.         tem.push_back(x);
  29.     }
  30.     sort(tem.begin(), tem.end());
  31.  
  32.     for (long i = 0; i != n ; ++i)
  33.     {
  34.         if (i == 0 || tem[i] != a.back())
  35.         {
  36.             a.push_back(tem[i]);
  37.             c.push_back(1);
  38.         }
  39.         else
  40.             ++c.back();
  41.     }
  42.     n = a.size();
  43. }
  44.  
  45. void process()
  46. {
  47.     vector<vector<long>> dp(3, vector<long>(m));
  48.     for (long i = 0; i != n; ++i)
  49.         dp[0][a[i]] = c[i];
  50.  
  51.     for (long i = 0; i != 2; ++i)
  52.         for (long j = 0; j != m; ++j)
  53.             for (long k = 0; k != n; ++k)
  54.                 dp[i+1][(j*a[k])%m] += dp[i][j]*c[k];
  55.  
  56.     cout << dp[2][0] << nln;
  57. }
  58.  
  59. int main()
  60. {
  61.     data();
  62.     process();
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment