/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Accepted 34ms 11.754 MiB
#2 Accepted 35ms 11.715 MiB
#3 Time Exceeded ≥1100ms ≥11.879 MiB
#4 Time Exceeded ≥1100ms ≥11.879 MiB

Code

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>

#define MX 1000000

static uint64_t dp[MX+1];
static uint32_t divisors[MX+1];

static void init_dp(void) {
    for (int i = 1; i <= MX; i++) {
        for (int j = i; j <= MX; j += i) {
            divisors[j]++;
        }
    }
    dp[0] = 0;
    dp[1] = 0;  

    for (int n = 2; n <= MX; n++) {
        dp[n] = dp[n-1] + (uint64_t)divisors[n] - 1;
    }
}


static uint64_t sum_floor_div(uint64_t n) {
    uint64_t res = 0;
    uint64_t i = 1;
    while (i <= n) {
        uint64_t q = n / i;
        uint64_t j = n / q;
        res += q * (j - i + 1);
        i = j + 1;
    }
    return res;
}

int main(void) {

    init_dp();

    int t;
    if (scanf("%d", &t) != 1) return 0;
    while (t--) {
        uint64_t n;
        scanf("%" SCNu64, &n);
        if (n <= MX) {
            printf("%" PRIu64 "\n", dp[n]);
        } else {
            uint64_t s = sum_floor_div(n);
            printf("%" PRIu64 "\n", s - n);
        }
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1207 D2. GCD equal Absolute Value (Hard Version)
Contest
Educational Round 1
Language
C99 (GCC 13.2.0)
Submit At
2025-07-14 17:58:31
Judged At
2025-07-14 17:58:31
Judged By
Score
5
Total Time
≥1100ms
Peak Memory
≥11.879 MiB