数列中找数

有一队数列有2000个数字,其中的数字只含有因子:3,5,7。
此队列的第1个数字是:3

第2个数字是:5
第3个数字是:7
第4个数字是:9
第5个数字是:15
第10个数字是:45
请你设计程序查找这个数列中的第几个数字是多少。

输入:
10
则程序应该输出:
45

再例如,输入:
1800
则程序应该输出:
30767501953125
思路:
根据题意3 5 7 9 15 分别为前5个数
9=3*3 15=3*5 推测第6位为21=3*7 第7位为25=5*5 第8位为27=3*9 第9位为35=5*7所以推测此数列为3 5 7 依次乘以数列中的数字从小到大去重排列得来。
代码如下:

import java.util.Scanner;
import java.util.TreeSet;

public class test16 {//第几个幸运数
/*
3 5 7 9 15 21 25 27 35 45
3 5 7 33 35 37 55 39 57 3*15
所以这题应该就是3 5 7分别依次乘以数列中的数然后去重,从小到大排列
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Object[] objs=f();
System.out.println(objs[n-1]);
sc.close();
}

private static Object[] f() {
	int[] a = { 3, 5, 7 };
	long tou = 1;
	TreeSet<Long> set=new TreeSet<Long>();
	while(true) {
		if(set.size()==2100) {
			break;
		}
		for(int j=0;j<3;j++) {
			long tt=tou*a[j];
			set.add(tt);
		}
		tou=set.higher(tou);
	}
return set.toArray();
}

}

猜你喜欢

转载自blog.csdn.net/CharlotteCYY/article/details/114442004