主要是考虑每一个位数上可以为1的可能来思考
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 100010;
int main()
{
int n,temp,ans=0;
scanf("%d",&n);
int index = 0;
for(temp = n;temp>0;temp/=10)
{
int i,l,r;
double t;
i = temp%10;
t=pow(10,index);
l = n/(t*10);
r = n%(int)t;
if(i==0)
ans+=l*t;
else if(i==1)
ans+=l*t + r + 1;
else
ans+=(l+1)*t;
index++;
}
printf("%d",ans);
return 0;
}