Advertisement
cosenza987

Untitled

Jul 3rd, 2021
1,335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. long long mod = 1000000007;
  4.  
  5. using namespace std;
  6.  
  7. vector<long long> v = {60, 120, 360, 2520, 5040, 55440, 720720, 1441440, 4324320, 21621600, 367567200, 6983776800, 13967553600, 321253732800, 2248776129600, 65214507758400, 195643523275200};
  8. vector<long long> ts = {2, 4, 6, 12, 18, 26, 38, 50, 62, 76, 94, 112, 136, 160, 186, 212};
  9.  
  10. int main() {
  11.     ios_base::sync_with_stdio(false);
  12.     cin.tie(0);
  13.     int t;
  14.     cin >> t;
  15.     while(t--) {
  16.         long long n;
  17.         cin >> n;
  18.         long long ans = ((n + 1) / 2) * 2 % mod;
  19.         long long kk = n / 12;
  20.         long long rest = n % 12;
  21.         ans += 21 * kk % mod;
  22.         switch(rest) {
  23.             case 3:
  24.             case 2:
  25.                 ans += 3 % mod;
  26.                 break;
  27.             case 5:
  28.             case 4:
  29.                 ans += 6 % mod;
  30.                 break;
  31.             case 7:
  32.             case 6:
  33.                 ans += 10 % mod;
  34.                 break;
  35.             case 9:
  36.             case 8:
  37.                 ans += 13 % mod;
  38.                 break;
  39.             case 11:
  40.             case 10:
  41.                 ans += 16 % mod;
  42.                 break;
  43.             default:
  44.                 break;
  45.         }
  46.         for(int i = 0; i < 17; i++) {
  47.             if(n < 60) {
  48.                 break;
  49.             }
  50.             if(n <= v[i]) {
  51.                 ans += ts[i] % mod;
  52.                 break;
  53.             }
  54.         }
  55.         ans = ans % mod;
  56.         cout << ans << "\n";
  57.     }
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement