package test1;
import java.util.Scanner;
public class oj_1003 {
public static int calA(float a){
int i;
double result = 0.00;
for(i = 2; result < a; i++){
result = result + 1.0/i;
}
return i-2;
}//求最大值的函数
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
int maxNum = 0;
int[] index = new int[256];//这里声明了一个静态数组来保存所生成的一系列的最大值,这里内存浪费很严重,需要改进
int j = 0;
while(cin.hasNext()){
String str = cin.nextLine();
if(str.equals("0.00"))
break;
float len = Float.valueOf(str).floatValue();
//得到浮点数字
maxNum = calA(len);
index[j] = maxNum;//将得到的最大值存到数组中
j++;
}
for(int i = 0;i<index.length;i++){
if(index[i]!=0){
System.out.println(index[i] +" " + "card(s)");//对数组里不为空的数字进行输出
}
}
}
}
这道题并没有太大难度,但是我用的是最为基本的办法,内存浪费很大,效率看上去低下,整个代码略显臃肿,应该可以对此进行进一步的改进。