fork download
  1. #include<bits/stdc++.h>
  2. #define ll long long int
  3. #define ld long double
  4. #define f first
  5. #define s second
  6. #define pb push_back
  7. #define mk make_pair
  8. #define boost ios::sync_with_stdio(false); cin.tie(0)
  9. using namespace std;
  10. const ll MOD = 1000000007;
  11. ll power(ll x, ll y, ll p)
  12. {
  13. ll res = 1;
  14. x = x % p;
  15.  
  16. while(y > 0)
  17. {
  18. if(y&1)
  19. res = (res*x)%p;
  20. y>>=1;
  21. x = (x*x)%p;
  22. }
  23. return res;
  24. }
  25. ll mod(ll x, ll p)
  26. {
  27. return ((x%p) + p)%p;
  28. }
  29. int main()
  30. {
  31. boost;
  32. ll t,n,a,b,c,d,m,i,val,s,ans;
  33. unordered_map <ll,ll> hmap;
  34. cin >> t;
  35. while(t--)
  36. {
  37. cin >> a >> b >> c >> d >> m;
  38. cin >> n;
  39. ll arr[n];
  40. for(i=0;i<n;i++)
  41. cin >> arr[i];
  42. ans = 0;
  43. for(i=0;i<n;i++)
  44. {
  45. val = power(abs(arr[i]), 2, m);
  46. hmap[val]++;
  47. }
  48.  
  49. for(i=0;i<n;i++)
  50. {
  51. val = 0;
  52. arr[i] < 0 ? s = -1 : s = 1;
  53. val = (val + mod(a*s*power(abs(arr[i]), 3, m), m))%m;
  54. val = (val + mod(b*power(abs(arr[i]), 2, m), m))%m;
  55. val = (val + mod(c*arr[i], m))%m;
  56. val = (val + mod(d, m))%m;
  57. ans = (ans + hmap[val])%MOD;
  58. }
  59. cout << ans << "\n";
  60. hmap.clear();
  61. }
  62. }
Success #stdin #stdout 0s 15240KB
stdin
1
2 1 -1 3 5
5
10 2 3 14 12
stdout
2