Advertisement
a53

B-ArrayGCD

a53
Aug 18th, 2021
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define mod 666013
  3. using namespace std;
  4. int power(int a, int b) {
  5. if (b == 0) {
  6. return 1;
  7. }
  8. if (b % 2 == 1) {
  9. return (1ll * a * power(a, b - 1)) % mod;
  10. }
  11. int P = power(a, b / 2);
  12. return (1ll * P * P) % mod;
  13. }
  14. int main() {
  15. int n, m;
  16. cin >> n >> m;
  17. vector<int> dp(m + 1ll);
  18. dp[m] = 1;
  19. for (int i = m - 1ll; i >= 1; --i) {
  20. dp[i] = power(m / i, n);
  21. for (int j = 2 * i; j <= m; j += i) {
  22. if (dp[j] > dp[i]) {
  23. dp[i] = dp[i] - dp[j] + mod;
  24. }
  25. else {
  26. dp[i] = dp[i] - dp[j];
  27. }
  28. }
  29. }
  30. int sum = 0;
  31. for (int i = 1; i <= m; ++i) {
  32. sum += (1ll * dp[i] * i) % mod;
  33. if (sum >= mod) {
  34. sum -= mod;
  35. }
  36. }
  37. cout << sum;
  38. }
  39.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement