问题:
给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。
例如:N= 2,写下1,2。这样只出现了1个“1”。
N= 12,我们会写下1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12。这样,1的个数是5。
问题一:
写一个函数f(N),返回1到N之间出现1的个数,比如f(12)= 5。
解法一:
让我们首先想到的一个方法是:遍历1~N,统计每个数1出现的个数,相加便得到所有1的个数。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
long long int Count(long long int n){
long long int count = 0;
while(n){
count += (n % 10 == 1)?1:0;
n = n / 10;
}
return count;
}
int main()
{
long long int n,i,count;
while(scanf("%lld",&n) != EOF){
count = 0;
for(i = 1;i <= n;i++){
count