Advertisement
dipBRUR

NEW

Nov 18th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. 1. Matrix Expo 2. Inclusion - Exclusion
  2. struct MAT { int RECURSE(ll arr[],ll i,ll j,int num,int numOFele,ll n) {
  3. ll v[7][7]; // i : সর্বশেষ সিলেক্টেড এলিমেন্টের ইন্ডেক্স
  4. int row, col; // j : এখন পর্যন্ত যা নেওয়া হয়েছে তাদের lcm
  5. }; // num : এখন পর্যন্ত যতোগুলা সিলেক্টেড হইছে
  6. MAT MULTIPLY(MAT A, MAT B) { // numOFele : মোট এলিমেন্ট সংখ্যা
  7. MAT ret; // n : লাস্ট নাম্বার রেঞ্জ এর (১ থেকে ১০০)
  8. ret.row = A.row, ret.col = B.col; if (i == numOFele)
  9. for (int i = 0; i < ret.row; i++) { return 0;
  10. for (int j = 0; j < ret.col; j++) { int x, y;
  11. ll sum = 0; for (x = i; x < numOFele; x++) {
  12. for (int k = 0; k < A.col; k++) { y = LCM(arr[x], j);
  13. sum += (A.v[i][k] % MOD * B.v[k][j] % MOD) % MOD; if ((num + 1) & 1)
  14. } ans += (n / y);
  15. ret.v[i][j] = sum; else
  16. } ans -= (n / y);
  17. } RECURSE(arr, x + 1, y, num + 1, numOFele, n);
  18. return ret; }
  19. } }
  20. MAT POWER(MAT mat, ll p) { // Call : RECURSE(arr, 0, 1, 0, m, n)
  21. if (p == 1) // m : number of element in the set
  22. return mat; // n : range (1000 etc)
  23. if (p & 1)
  24. return MULTIPLY(mat, POWER(mat, p-1));
  25. else
  26. {
  27. MAT ret = POWER(mat, p >> 1);
  28. return MULTIPLY(ret, ret);
  29. }
  30. }
  31. // call mat = POWER(mat, n - k)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement