总时间限制:
1000ms
内存限制:
65536kB
描述
给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。
例如:当n=2时,写下1,2。这样只出现了1个“1”;当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12。这样出现了5个“1”。
输入
正整数n。1 <= n <= 10000。
输出
一个正整数,即“1”的个数。
样例输入
12
样例输出
5
分析及代码:
分析:用k来计算总共有多少个1,用i来遍历从1到n,用m表示最低位是否为1,a表示中间量,用a%10来依次看各个位上是否为1,a/10来分离个位。
#includeusing namespace std; int main() { int n, i, k = 0, m, a; cin >> n; for (i = 1;i <= n;i++) { a = i; while (a != 0) { m = a % 10; if (m == 1) k++; a = a / 10; } } cout << k; return 0; }



