总时间限制:
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来分离个位。
#include<iostream>
using 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;
}