$神秘RE求调$
查看原帖
$神秘RE求调$
1381844
yinziye楼主2025/1/17 19:33
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=1005;
int p[MAXN],f[MAXN],n,m,vis[MAXN],cnt,ans;
int re(){
    int k=1,s=0;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-'){k=-1;}ch=getchar();}
    while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
    return k*s;
}
void work(){//质数筛
    cnt=0;
    for(int i=2;i<=n;i++){
        if(!vis[i]) p[++cnt]=i;
        for(int j=1;j<=cnt && i*p[i<=n];j++)
            vis[i*p[j]]=1;
    }
}
void dp(){
    f[0]=1;
    for(int i=1;i<=cnt;i++)
        for(int j=n;j>=p[i];j--){
            int k=p[i];
            for(;k<=j;k*=p[i]){//枚举
                f[j]+=f[j-k]*k%m;
                f[j]%=m;
            }
        }
    for(int i=0;i<=n;i++) ans=(ans+f[i])%m;
    cout<<ans<<'\n';
}
signed main(){
    n=re();m=re();
    work();
    dp();
    return 0;
}

神秘RE求调

2025/1/17 19:33
加载中...