给出一个数n,分别计算n的每一位置上为1的范围从1~n内的数的个数有多少,相加之后就是最终结果
代码如下:
#include <iostream>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int a=1,left=0,right=0,now,ans=0;
while(n/a){
left=n/(a*10),now=n/a%10,right=n%a;
if (now==0){
ans+=left*a;
}
else if (now==1){
ans+=left*a+right+1;
}
else{
ans+=(left+1)*a;
}
a=a*10;
}
printf("%d",ans);
return 0;
}