fzu_noip 1032 无穷数(进位判定)(二)

2014-11-24 08:13:37 · 作者: · 浏览: 2
3162278,9999999),(10000000,31622776),(31622777,99999999),
(100000000,316227766),(316227767,999999999),(1000000000,2147483647));
var
k:longint;
function search_ai(k:longint):longint;
var
i,j,d,k2,g:int64;
begin
d:=1;i:=9;
while (true) do
begin
if (k-d*i>0) then
begin
dec(k,d*i);
i:=i*10;inc(d);
end
else break;
end;
k2:=i div 9+(k-1) div d;
g:=(k-1) mod d+1;
g:=d-g+1;
while (g>1) do begin k2:=k2 div 10;dec(g); end;
exit(k2 mod 10);
end;
{
function search_bi(k:longint):longint;
var
i,j:int64;
head:longint;
begin
head:=1;j:=10; i:=1;
while (i<=2147483647 ) do
begin
if ((i*i) div j>0) then
begin
write('(',head,',',i-1,')',',');
head:=i; j:=j*10;
end;
inc(i);
end;
end; }
function search_bi(k:longint):longint;
var
i:longint;
g,k2:int64;
begin
i:=1;
while (k>i*(a[i,2]-a[i,1]+1)) do
begin
dec(k,i*(a[i,2]-a[i,1]+1));
inc(i);
end;
k2:=(k-1) div i+1;
k2:=a[i,1]-1+k2;
k2:=k2*k2;
g:=(k-1) mod i+1;
g:=i-g+1;
while (g>1) do begin k2:=k2 div 10;dec(g); end;
exit(k2 mod 10);
end;
function search_fi(k:longint):longint;
var
i:longint;
begin
i:=search_ai(k)+search_bi(k);
if (i<=8) then exit(0)
else if (i>9) then exit(1)
else exit(search_fi(k+1));
end;
begin
// assign(output,'dabiao.out');
// rewrite(output);
while not eof do
begin
readln(k);
writeln((search_bi(k)+search_ai(k)+search_fi(k+1)) mod 10);
end;
// search_bi(1);
//close(output);
end.