# Poj Solution 3286

```http://poj.org/problem?id=3286

//* @author: 82638882@163.com
import java.io.*;
public class Main
{
static long[] a=new long[]{
1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000
};
static long[] b=new long[]{
0,1,11,192,2893,38894,488895,5888896,68888897,788888898
};
static long[] c=new long[]{
0,1,20,300,4000,50000,600000,7000000,80000000,900000000
};
public static void main(String[] args) throws IOException
{
while(true)
{
long a=Long.parseLong(ss[0]);
long b=Long.parseLong(ss[1]);
if(a==-1&&b==-1)break;
if(a==0)System.out.println(f(b)+1);
else System.out.println(f(b)-f(a-1));
}
}
static long f(long w)
{
int i;
long q=w;
for(i=0;i< 10;i++)
if(a[i]>w)break;
long sum=0;
for(int j=i-1;j>0;j--)
{
long u=w/a[j];
if(u>0)
sum+=b[j]+(u-1)*c[j];
w=w%a[j];
}
long total=0,oo=0;
w=q;
String s=w+"";
for(int j=1;j< i-1;j++)
{
if(w%(a[j]*10)>=a[j]){
total+=a[j]-1;
oo+=total;
}
else oo+=w%(a[j]*10);
}
int bb=0;
long yy=0;
for(int g=1;g< s.length();g++)
{
if(s.charAt(g)!='0'){
bb++;
continue;
}
yy+=(Math.pow(10, s.length()-g-1)-1)*bb;
}
sum+=oo;
sum+=yy;
return sum;
}
}
```
This entry was posted in poj. Bookmark the permalink.