问题描述
- java问题,求教!!!!!!!
-
题目描述小明很喜欢3和5这两个数字,他将能被3或5整除的数叫做美丽数。现在给你一个整数N(1<=N<=100000),你能告诉小明第N个美丽数是多少吗?
输入格式
输入包含多组测试数据。每组输入一个整数N(1<=N<=100000)。
输出
对于每组输入,输出第N个美丽数。
样例输入
1
2
3
4样例输出
3
5
6
9import 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;} } } } } }
为什么说我是时间超限了
解决方案
for(int num=3;count<100000;num++){
解决方案二:
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;
时间: 2024-10-21 10:57:53