fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //
  4. void process (void)
  5. {
  6. int q, type;
  7. long long l, r;
  8. //
  9. auto prefix = [](long long n) -> long long
  10. {
  11. int k = n % 4;
  12. //
  13. if (k == 0)
  14. return n;
  15. if (k == 1)
  16. return 1;
  17. if (k == 2)
  18. return n + 1;
  19. return 0;
  20. };
  21. auto even = [](long long n) -> long long
  22. {
  23. int k = n % 8;
  24. //
  25. if (k == 0)
  26. return n;
  27. if (k == 2)
  28. return 2;
  29. if (k == 4)
  30. return n + 2;
  31. return 0;
  32. };
  33. auto odd = [](long long n) -> long long
  34. {
  35. int k = n % 8;
  36. //
  37. if (k == 1)
  38. return n;
  39. if (k == 3)
  40. return 2;
  41. if (k == 5)
  42. return n ^ 2;
  43. return 0;
  44. };
  45. //
  46. for (cin >> q; q--; cout << '\n')
  47. {
  48. cin >> type >> l >> r;
  49. if (type == 1)
  50. cout << (prefix(r) ^ prefix(l - 1));
  51. else if (l % 2 == 0)
  52. cout << (even(r) ^ even(l - 2));
  53. else
  54. cout << (odd(r) ^ odd(l - 2));
  55. }
  56. }
  57. //
  58. signed main (void)
  59. {
  60. ios_base::sync_with_stdio(false);
  61. cin.tie(nullptr), cout.tie(nullptr);
  62. process();
  63. }
  64.  
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2