Description
给定一个十进制正整数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”。
Input
正整数n。1 <= n <= 10000。
Output
一个正整数,即“1”的个数。
Sample Input
12
Sample Output
5
Source Code
#include<stdio.h>
int main()
{
int n,k=0; //k,1的个数
scanf("%d",&n);
for(int i = 1; i<=n; i++)
{
int a = i;
while(a)
{
if(a%10==1)
k++;
a/=10;
}
}
printf("%d",k);
return 0;
}
Computational Results
Hint
检测从1到n中每个数中含“1”的个数(即每个数中含有几个“1”),使其相加。
当然对于一些较大的数就得不断使其缩小,上述代码以10为基准