在从1 到n 的正数中1 出现的次数

来源:互联网 发布:淘宝详情页一整张上传 编辑:程序博客网 时间:2024/04/30 02:05

题目:输入一个整数n,求从1 到n 这n 个整数的十进制表示中1 出现的次数。 例如输入12,从1 到12 这些整数中包含1 的数字有1,10,11 和12,1 一共出现了5 次。 分析:这是一道广为流传的google 面试题。

采用的方法是把整数转化为字符,然后统计‘1’的个数

#include <iostream>using namespace std;int findx(int num){char string[1000];int i,tmp,k,t;k = 0;t =0;int count[1000];count[k] =0;static int m = 0;for(i = 1 ;i<=num ;i++){   tmp = i;if(tmp/10 ==0){          m++;    }if((tmp/10)!=0){m++;}while((tmp/10)!=0){m++;tmp = tmp/10;}k++;count[k]=m;itoa(i , &string[count[k-1]],10);}for(i = 0 ;i<1000 ; i++){if(string[i] == '1'){           t++;}}cout<<t<<endl;return t;}void main(){int num = 20;int len = findx(num);cout<<len<<endl;}