/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Accepted 70ms 15.672 MiB
#2 Accepted 74ms 15.773 MiB
#3 Time Exceeded ≥1001ms ≥15.668 MiB
#4 Time Exceeded ≥1101ms ≥15.812 MiB

Code

#include <bits/stdc++.h>
using namespace std;
 
 
// const int MOD = 1e9 + 7;
const int MX = 1e6;
long long dp[MX + 1];
long long divisors[MX + 1];
 

// unordered_map<int,long long> mp;

// long long again_solve(int n) {
//     if(mp[n]) return mp[n];
//     long long res = 0;
//     long long i = 1;
//     while (i <= n) {
//         long long q = n / i;
//         long long j = n / q;
//         res += q * (j - i + 1);
//         i = j + 1;
//     }
//     return mp[n] = res;
// }
 
 
// void solve(){
//   int n;
//   cin >> n;
//   cout << again_solve(n) - n << endl;
// }

void solve(){
  int n;
  cin >> n;
  long long ans = 0;
  for(int i = 1 ; i <= min((int)1e6,n) ; i++){
    ans += n / i - 1;
  }
  if(n <= 1e6){
    cout << ans << endl;
    return;
  }
  for(int i = n / (int)1e6 + 1 ; i >= 1 ; i--){
    ans += max(0,(n / i - max((int)1e6+1,n / (i + 1))));
  }
  // if(n <= MX) cout << dp[n] << endl;
  // else{
  //   long long ans = dp[MX] - (n - MX);
  //   int j = MX + 1;
  //   while(n / j == n / MX){
  //     ans += n / j;
  //     j++;
  //   }
  //   cout << ans << endl;
  //   for(int k = n / j ; k >= 1 ; k--){
  //     ans += k * (n / k - n / (k + 1));
  //   }
  //   cout << ans << endl;
  // }
  cout << int(ans - (n - 1e6) + 1) << endl;
}



 
 
 
 
int main()
{
    int t = 1;
    cin >> t;
    for(int i = 1; i <= MX ; i++){
      for(int j = i ; j <= MX ; j += i){
        divisors[j]++;
      }
    }
    dp[1] = 0;
    for(int i = 2 ; i <= MX ; i++){
      dp[i] = dp[i-1] + divisors[i] - 1;
    }
    while(t--) solve();
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1207 D2. GCD equal Absolute Value (Hard Version)
Language
C++17 (G++ 13.2.0)
Submit At
2025-07-14 18:57:23
Judged At
2025-07-14 18:57:23
Judged By
Score
5
Total Time
≥1101ms
Peak Memory
≥15.812 MiB