QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#873783#10039. Infinity Triplesrotcar07AC ✓225ms10824kbC++141.2kb2025-01-26 22:44:462025-01-26 22:44:47

Judging History

你现在查看的是最新测评结果

  • [2025-01-26 22:44:47]
  • 评测
  • 测评结果:AC
  • 用时:225ms
  • 内存:10824kb
  • [2025-01-26 22:44:46]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
constexpr int N=1e5+5;
int pr[N],n;vector<int>P;
typedef long long ll;
ll ans=0;
vector<int> w[N];
int z[1<<20];
int main(){
    cin>>n;
    for(int i=2;i<=n;i++){
        if(!pr[i]) P.emplace_back(i),w[i].emplace_back(i);
        for(int x:P){
            if(i*x>n) break;
            pr[i*x]=1;w[i*x]=w[i];
            if(i%x==0)break;w[i*x].emplace_back(x);
        }
    }
    for(int i=2;i<=n;i++){
        int l=w[i].size();
        for(int k=0;k<1<<l;k++){
            z[k]=1;
            for(int j=0;j<l;j++) if(k>>j&1) z[k]*=w[i][j];
        }
        auto dfs=[&](auto dfs,int x,int pos) -> void {
            if(pos==l){
                ll k=0;
                for(int j=0;j<1<<l;j++){
                    int w=n/x/z[j];
                    if(__builtin_parity(j)) k-=w;
                    else k+=w;
                }
                ans+=(i-1)/x*k;
                // cout<<i<<' '<<x<<' '<<ans<<'\n';
                return;
            }
            for(;x*1ll*w[i][pos]<i;x*=w[i][pos]) dfs(dfs,x,pos+1);
            dfs(dfs,x,pos+1);
        };
        dfs(dfs,1,0);
    }
    cout<<ans<<'\n';
}

詳細信息

Test #1:

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

input:

2

output:

1

result:

ok 1 number(s): "1"

Test #2:

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

input:

3

output:

6

result:

ok 1 number(s): "6"

Test #3:

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

input:

42

output:

25055

result:

ok 1 number(s): "25055"

Test #4:

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

input:

300

output:

9451821

result:

ok 1 number(s): "9451821"

Test #5:

score: 0
Accepted
time: 4ms
memory: 8096kb

input:

5000

output:

44014644629

result:

ok 1 number(s): "44014644629"

Test #6:

score: 0
Accepted
time: 164ms
memory: 8908kb

input:

79526

output:

177147942250613

result:

ok 1 number(s): "177147942250613"

Test #7:

score: 0
Accepted
time: 225ms
memory: 10824kb

input:

100000

output:

352215237377619

result:

ok 1 number(s): "352215237377619"