Submission #75093

#TimeUsernameProblemLanguageResultExecution timeMemory
75093charlies_mooSavrsen (COCI17_savrsen)C++17
60 / 120
2305 ms79164 KiB
#include <iostream>
#include <cmath>

using namespace std;

int main() {
    int p[4000];
    int pc = 0;
    for (int i = 2; i < 4000; i++) {
        bool f = true;
        for (int j = 0; j < pc; j++) {
            if (i % p[j] == 0) {
                f = false;
                break;
            }
        }

        if (f) {
            p[pc++] = i;
        }
    }
    
    int a, b;
    cin >> a >> b;

    long long f[b+1];
    f[1] = 1;
    for (int i = 2; i <= b; i++) {
        int q = 0;
        for (int j = 0; j < pc; j++) {
            if (i % p[j] == 0) {
                q = p[j];
                break;
            }
        }
        
        if (q) {
            int t = q, s = 1;
            while (i % t == 0) {
                s += t;
                t *= q;
            }
            t /= q;
            f[i] = s * f[i/t];
        } else {
            f[i] = i + 1;
        }
    }
    
    long long ans = 0;
    for (int i = a; i <= b; i++) {
        ans += abs(f[i] - i - i);
    }

    cout << ans << endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...