QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#882935#10039. Infinity Tripleslgvc#AC ✓375ms19284kbC++231.3kb2025-02-05 13:39:502025-02-05 13:39:51

Judging History

This is the latest submission verdict.

  • [2025-02-05 13:39:51]
  • Judged
  • Verdict: AC
  • Time: 375ms
  • Memory: 19284kb
  • [2025-02-05 13:39:50]
  • Submitted

answer

#include <bits/stdc++.h>
int M,vq[200009],miu[200009],su[200009],k;
std::vector<int> t[200009],tq,as,d[200009];
void dfs(int v,int p) {
    if(p==tq.size()) {
        as.push_back(v);
        return;
    }
    while(1) {
        dfs(v,p+1);
        if(v>M/tq[p]) return;
        v*=tq[p];
    }
}
int cl(int x,int y) {
    int as=0;
    for(int i=0;i<d[x].size();i++) {
        int p=d[x][i];
        as+=miu[p]*y/p;
    }
    return as;
}
signed main(void) {
    scanf("%d",&M);
    long long ans=0;
    miu[1]=1;
    for(int i=2;i<=M;i++) {
        if(!vq[i]) {
            su[++k]=i;
            miu[i]=-1;
            for(int j=i;j<=M;j+=i) t[j].push_back(i);
        }
        for(int j=1;j<=k&&su[j]*i<=M;j++) {
            vq[i*su[j]]=1;
            if(i%su[j]==0) break;
            miu[i*su[j]]=-miu[i];
        }
    }
    for(int i=1;i<=M;i++) {
        if(miu[i]==0) continue;
        for(int j=i;j<=M;j+=i) d[j].push_back(i);
    }
    for(int b=2;b<=M;b++) {
        tq.clear();
        as.clear();
        for(int i=0;i<t[b].size();i++) {
            int x=t[b][i];
            tq.push_back(x);
        }
        dfs(1,0);
        for(int j=0;j<as.size();j++) {
            int x=as[j];
            ans+=1ll*(b-1)/x*cl(b,M/x);
        }
    }
    printf("%lld",ans);
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 5968kb

input:

2

output:

1

result:

ok 1 number(s): "1"

Test #2:

score: 0
Accepted
time: 1ms
memory: 3840kb

input:

3

output:

6

result:

ok 1 number(s): "6"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3840kb

input:

42

output:

25055

result:

ok 1 number(s): "25055"

Test #4:

score: 0
Accepted
time: 0ms
memory: 5964kb

input:

300

output:

9451821

result:

ok 1 number(s): "9451821"

Test #5:

score: 0
Accepted
time: 7ms
memory: 6612kb

input:

5000

output:

44014644629

result:

ok 1 number(s): "44014644629"

Test #6:

score: 0
Accepted
time: 276ms
memory: 15104kb

input:

79526

output:

177147942250613

result:

ok 1 number(s): "177147942250613"

Test #7:

score: 0
Accepted
time: 375ms
memory: 19284kb

input:

100000

output:

352215237377619

result:

ok 1 number(s): "352215237377619"