题目链接
求第n个只能将2 3 5 7整除的数.
特点:第n个数是前面的数×{2,3,5,7}得到的最小数
注意输出!
const int MAXN=2000000000;
const int MOD=998244353;
ll p[5842]={1,2,3,4,5,6,7};
int check[4]={2,3,5,7};
void init(){
int t=5;
while(t<5842){
ll min=MAXN;
for(int i=0;i<=t;i++){
for(int j=0;j<4;j++){
ll tt=p[i]*check[j];
if(tt<min && tt>p[t])min=tt;
}
}
p[++t]=min;
}
}
int main(){
SIS;
int n;
init();
while(scanf("%d",&n)){
if(n==0)break;
if(n%10==1&&n%100!=11)printf("The %dst humble number is %lld.\n",n,p[n-1]);
else if(n%10==2&&n%100!=12)printf("The %dnd humble number is %lld.\n",n,p[n-1]);
else if(n%10==3&&n%100!=13)printf("The %drd humble number is %lld.\n",n,p[n-1]);
else printf("The %dth humble number is %lld.\n",n,p[n-1]);
}
return 0;
}