题目描述
小明很喜欢3和5这两个数字,他将能被3或5整除的数叫做美丽数。现在给你一个整数N(1<=N<=100000),你能告诉小明第N个美丽数是多少吗?
输入格式
输入包含多组测试数据。每组输入一个整数N(1<=N<=100000)。
输出
对于每组输入,输出第N个美丽数。
样例输入
1
2
3
4
样例输出
3
5
6
9
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
while(input.hasNextInt()){
int N=input.nextInt();
int count=0;
for(int num=3;count<100000;num++){
if(num % 3==0 || num % 5==0){
count++;
if(count==N){
System.out.println(num);
break;}
}
}
}
}
}
为什么说我是时间超限了
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
ArrayList list = new ArrayList();
while(input.hasNextInt()){
int N=input.nextInt();
list.add(N);
}
Integer[] array = (Integer[])list.toArray(new Integer[list.size()]);
Arrays.sort(array);
int maxNum = 0;//获取最大需要的数值
maxNum = array[array.length-1]*3;//按3的倍数估算,最大需要该数值
int num=0;
int cnt =0;
while(num<=maxNum&&cnt<array[array.length-1]){
num++;//步长还是可以优化的。没必要每次都是+1
if(num%3==0 || num%5==0){
cnt++;
if(list.contains(cnt)){
System.out.println(num);
}
}
}
}
3 5 6 9 10 12 15 18 20 21 24 25 27 30
15为一个周期,每15就有7个美丽数。
int count = 0;
for( int i = 0, i < 100, i++) {
if(i%5 == 0&& i%3 == 0){
count ++;
}
}
return count;
for(int num=3;count<100000;num++){