/**
* 给定一个十进制正整数N,写下从1开始到N的所有整数中出现的1的个数
* */
#include <iostream>
using namespace std;
unsigned int count_1(unsigned int n)
{
unsigned int count=0;
unsigned int lowNum=0;
unsigned int curNum=0;
unsigned int highNum=0;
unsigned int factor=1;
while(n/factor)
{
lowNum=n%factor;
curNum=(n/factor)%10;
highNum=n/(factor*10);
switch(curNum)
{
case 0:
count+=highNum*factor;
break;
case 1:
count+=highNum*factor+(lowNum+1);
break;
default:
count+=(highNum+1)*factor;
break;
}
factor*=10;
}
return count;
}
//暴力解决
unsigned int count_for_force(unsigned int n)
{
unsigned int count=0;
unsigned int j;
for(unsigned int i=1;i<=n;++i)
{
j=i;
while(j)
{
if(j%10==1)
++count;
j/=10;
}
}
return count;
}
int main(int argc,char* argv[])
{
cout<<count_for_force(100)<<endl;
cout<<count_1(100)<<endl;
return 0;
}
计算从1到N中,1出现的次数
最新推荐文章于 2022-01-18 18:07:41 发布