比赛 ?板子大赛 评测结果 AAAAAAAAAA
题目名称 整数合并 最终得分 100
用户昵称 exil 运行时间 0.082 s
代码语言 C++ 内存使用 6.74 MiB
提交时间 2026-01-17 13:25:44
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<int> v[100005];
bool shu[100005];
int fa[100005];
int a,p,b;
int num=-1;
void aishi(){
    for(int i = 2;i<=b;i++){
        if(shu[i]==0){
            if(i>=p){
                num++;
                v[num].push_back(i);
            }
            if(a<=i && b>=i)v[num].push_back(i);
            for(int j=i*2;j<=b;j+=i){
                if(a<=j && b>=j)v[num].push_back(j);
                shu[j]=1;
            }
        }
    }
}
signed main(){
    freopen("setb.in","r",stdin);
    freopen("setb.out","w",stdout);
    cin>>a>>b>>p;
    aishi();
    for(int i = 0;i<=num;i++){
        int l=v[i].size();
        int pan=0;
        for(int j = 1;j<l;j++){
            if(fa[v[i][j]]==0)fa[v[i][j]]=i+1;
            else{
                pan=fa[v[i][j]];
                break;
                
            }
        }
        if(pan!=0){
            for(int j = 1;j<l;j++){
                fa[v[i][j]]=pan;
            }
        }
    }
    set<int> s;
    int q=0;
    for(int i=a;i<=b;i++){
        if(fa[i]!=0)s.insert(fa[i]);
        else q++;
    }
    cout<<s.size()+q;
    return 0;
}