#include<stdio.h>
#include<string.h>
#define size 100000
int res[size];
int prime[100];
int n;
int getnum(int index) {
// tj就是乘以prime[j]的丑数.
int t[100]={0};
for(int i = 1; i < index; i++)
{
// 丑数中选取最小的丑数作为下一个丑数
int min=0x7FFFFFFF;
for(int j=0;j<n;j++)
{
if(res[t[j]]*prime[j]<min)
min=res[t[j]]*prime[j];
}
res[i] = min;
printf("min%d=%d \n",i,res[i]);
for(int j=0;j<n;j++){
if(res[i] == res[t[j]]*prime[j])
t[j]++;
}
}
return res[index-1];
}
int main()
{
int index;
int i=0;
scanf("%d %d",&n,&index);
memset(res,0,sizeof(res));
res[0]=1;
int x=n;
while(x--){scanf("%d",&prime[i++]);}
int num=getnum(index+1);
printf("%d",num);
return 0;
}
丑数-寻找第n个
于 2020-05-01 19:23:51 首次发布