题目描述
可以先看看丑题的思路
https://www.acwing.com/solution/content/231495/
样例
import java.util.*;
/*
丑数题目的思想:3个质数,3个指针去维护
本题思路:利用丑数题目的思想,我们这里通过n个质数,n个指针去维护,需要for循环
*/
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
//k是质子的个数,n是操作的次数,p用来存放质子,idx存放质子对应的指针走到了哪个位置
int k = sc.nextInt(),n = sc.nextInt(),p[] = new int[k],idx[] = new int[k];
for(int i= 0; i < k; i++){
p[i]=sc.nextInt();
}
List<Long> list=new ArrayList<>();
//先加入1,但是1不是谦虚数字
list.add(1L);
for(int i = 0; i < n; i++){
//先把min设置成无穷大,好跟第一个数字比较
long min=(long)1e15;
for(int j = 0; j < k; j++){
min=Math.min(min,list.get(idx[j])*p[j]);
}
for(int j = 0; j < k; j++){
if(list.get(idx[j])*p[j]==min){
idx[j]++;
}
}
list.add(min);
//System.out.println(min);
}
//这里是get(n),因为1不是谦虚数字,所以不是get(n-1)
System.out.println(list.get(n));
}
}