版权声明:~~~感谢支持! https://blog.csdn.net/qq_39897867/article/details/89060424
题目
解题思路
[题解]~~~~
[卡常]https://blog.csdn.net/xuxiayang/article/details/89000258
代码
#include<cstdio>
#include<algorithm>
#define ll long long
#define rep(i,x,y,z) for (register long long i=x;i<=y;i+=z)
using namespace std;
const ll inf=1e9;
ll ant,prime[30001],m,n,p,v[32501]; bool f;
signed main(){
scanf("%lld%lld",&n,&p);
if (n==1) return 0&printf("%lld",p); else
if (n>1&&p*p>inf) return 0&printf("0"); else n--;
rep(i,2,32500,1) {
if (!v[i]) v[i]=i,prime[++m]=i;
rep(j,1,m,1){
if (prime[j]>v[i]||prime[j]>32500/i) break;
v[i*prime[j]]=prime[j];
}
}
if (p==2) {
if (2*n+2<=inf) return 0&printf("%lld",2*n+2);
} else if (p==3){
if (6*n+3<=inf) return 0&printf("%lld",6*n+3);
} else if (p==5){
rep(i,p*p,inf,10)
if (i%3) if (!--n) return 0&printf("%lld",i);
} else if (p==7){
rep(i,p*p,inf,14)
if ((i%3)&&(i%5)) if (!--n) return 0&printf("%lld",i);
} else if (p==11){
rep(i,p*p,inf,22)
if ((i%3)&&(i%5)&&(i%7)) if (!--n) return 0&printf("%lld",i);
} else if (p==13){
rep(i,p*p,inf,26)
if ((i%3)&&(i%5)&&(i%7)&&(i%11)) if (!--n) return 0&printf("%lld",i);
} else if (p==17){
rep(i,p*p,inf,34)
if ((i%3)&&(i%5)&&(i%7)&&(i%11)&&(i%13)) if (!--n) return 0&printf("%lld",i);
} else {
ant=lower_bound(prime+1,prime+1+m,p)-prime-1;
rep(i,p*p,inf,2*p){
f=0; rep(j,1,ant,1) if (i%prime[j]==0) {f=1;break;}
if (f==0) if (!--n) return 0&printf("%lld",i);
}
}
return 0&putchar('0');
}