N为正整数,计算从1到N的所有整数中包含数字1的个数。

输入数据有多组测试数据,每一组占一行,每行为一个数字N,其中1≤N≤9999。以0作为结束。

输出1到N所有整数中1的个数,每个测试占一行。

写个for循环,然后循环中吧数字转化为String,然后用contain方法判断是否有(“1”)

int count(int n)
{
if (n >= 1000) return n / 1000 * count(999) + count(n % 1000) + (n >= 2000 ? 1000 : n - 999);
if (n >= 100) return n / 100 * count( 99) + count(n % 100) + (n >= 200 ? 100 : n - 99);
if (n >= 10) return n / 10 * count( 9) + count(n % 10) + (n >= 20 ? 10 : n - 9);

return n >= 1;
}

http://blog.csdn.net/m0_37586584/article/details/58088942