hdu 1058 丑数

题目链接


求第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;
}
发布了20 篇原创文章 · 获赞 2 · 访问量 249

猜你喜欢

转载自blog.csdn.net/weixin_45535964/article/details/105207483