class countZero{
//声明一个凑集
private List<Integer>list = null;
//天生要进行打算的数,把这些按顺序数加入到List凑集
public void getList(int stopI) {
int stop = stopI + 1;
List<Integer>mylist = new ArrayList<Integer>();
for(int i=1; i<stop; i++)
mylist.add(i);
list = mylist;
}
//打算一个整数里有几个0
private int zeroCount(String Str, char c) {
//再把字符串拆分成数组
char[] cr = Str.toCharArray();
//末了打算系统的字符
int n = 0;
for(char C : cr) {
if(C == c)
n++;
}
return n;
}
//进行打算
public int countResult() {
int sum = 0;
int one = 0;
int two = 0;
int len = list.size();
int L = len % 2 == 0 ? len / 2 : (len + 1) / 2;
String sss = "";
for(int i=0; i<L; i++) {
//不管循环到第几次,前一个都有值
one = list.get(0);
//如果是末了一次循环
if(i==L-1)
/
如果只有一个元素,第二个元素就没有了,我们给指定为1,
如果有两个元素,必须有第二个了,当然直接赋值
/
two = len == 1 ? 1 : list.get(1);
//如果不是末了一次循环
else{
//后一个也肯定有值,以是直接赋
two = list.get(1);
//赋完值后都要进行删除
list.remove(1);
list.remove(0);
}
//重新打算list凑集的长度
len = list.size();
//打算前两个元素的积,并把积转成字符串类型
String product = one two +"";
//获取字符串里第一个0的位置
int index = product.indexOf("0");
//判断字符串里是不是有0,有0再进行打算
if(index != -1)
//打算有几个0,然后进行累加
sum += zeroCount(product, '0');
}
//返回出末了的打算结果
return sum;
}
}
countZero cz = new countZero();
//参数是要从1到什么数,比如以下的是从1到3000
cz.getList(3000);
out.print(cz.countResult());
用以上的代码便是根据题目的意思进行打算(我只是说可以打算,但是不是可以优化没去剖析)。