/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 2ms 532.0 KiB
#3 Accepted 722ms 1.133 MiB
#4 Accepted 714ms 1.145 MiB
#5 Accepted 711ms 1.137 MiB
#6 Accepted 241ms 856.0 KiB
#7 Accepted 720ms 1.141 MiB

Code

// #pragma GCC target("avx2")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")

// Based on:
// https://judge.yosupo.jp/submission/179750
// Enumerate Quotients
// https://judge.yosupo.jp/problem/enumerate_quotients
#include<bits/stdc++.h>

using namespace std;

// vector<long long> Enu_quo(long long n){
//   vector<long long> head;
//   vector<long long> tail;
//   for(long long i=1;i*i<=n;i++){
//     head.push_back(i);
//     tail.push_back(n/i);
//   }
//   if(head.back()==tail.back()){tail.pop_back();}
//   for(long long i=tail.size()-1;i>=0;i--){head.push_back(tail[i]);}
//   return head;
// }

int main(){
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int t;
  cin >> t;
  while(t>0){
    t--;
    int n;
    cin >> n;

    vector<int> head;
    vector<int> tail;
    for(int i=1;i*i<=n;i++){
      head.push_back(i);
      tail.push_back(n/i);
    }
    if(head.back()==tail.back()){tail.pop_back();}
    for(int i=tail.size()-1;i>=0;i--){head.push_back(tail[i]);}

    long long res=0;
    for(int i=0;i<((long long)head.size())-1;i++){
      long long del=((n/head[i])-(n/head[i+1]));
      del*=head[i];
      res+=del;
    }
    cout << res << "\n";
  }
  return 0;
}

Information

Submit By
Type
Submission
Problem
P1207 D2. GCD equal Absolute Value (Hard Version)
Contest
Educational Round 1
Language
C++17 (G++ 13.2.0)
Submit At
2025-07-14 15:57:27
Judged At
2025-07-14 15:57:27
Judged By
Score
100
Total Time
722ms
Peak Memory
1.145 MiB