/**
* Created by wangliang on 16-12-1.
*/
public class Demo {
public static void main(String[] args) {
long start = System.currentTimeMillis();
System.out.println("1一共出现 " + get1Count(2002) + "次");
System.out.println("time:" + (System.currentTimeMillis() - start));
}
// 1 + 11 + ... + 111...111(num个1)
private static int get1Count(int num) {
long ret = 0;
int c = 0;
String strRet;
for (int i = 1; i <= num; i++) {
ret += getNum(i, c);
if (ret >= 123456790) {
strRet = String.valueOf(ret);
if (strRet.contains("123456790")) {
strRet = strRet.replace("123456790", "");
ret = Long.parseLong(strRet);
c++;
}
}
System.out.println("ret:" + ret + ", c:" + c + ", i: " + i);
}
char[] arr = String.valueOf(ret).toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] == '1') {
c++;
}
}
return c;
}
private static long getNum(int num, int c) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < num - c * 9; i++) {
builder.append("1");
}
return Long.parseLong(builder.toString());
}
}
网友评论