题目描述:给定一个十进制正整数N,计算从1开始到N的所有整数中出现所有“1”的个数。
#include <iostream>
#include <vector>
using namespace std;
int count( int n) {
int iCount=0;
int iFactor=1;
int iLower=0,iCurr=0,iHigher=0;
while(n/iFactor !=0){
iLower=n-(n/iFactor)*iFactor;
iCurr=(n/iFactor)%10;
iHigher=n/(iFactor*10);
switch(iCurr){
case 0:
iCount+=iHigher*iFactor;
break;
case 1:
iCount+=iHigher*iFactor+iLower+1;
break;
default:
iCount+=(iHigher+1)*iFactor;
break;
}
iFactor*=10;
}
return iCount;
}
int main()
{
//test
cout<<count(123)<<endl;
cout<<count<<(1234)<<endl;
cout<<count<<(10000)<<endl;
return 0;
}