主题:帮我看看到底哪里错了
题目:
数列:12345678910111213...........
输入是一个数n,表示求数列的第n位
1<=n<=10^8
输出第n位上的数
样例:
输入:33
输出:1
我编的代码:
const a:array[1..8] of longint=(9,189,2889,38889,488889,5888889,68888889,788888889);
power:array[1..8] of longint=(1,10,100,1000,10000,100000,1000000,10000000);
var ans,i,n,x,y:longint;
begin
readln(n);
i:=1;
while n>a[i] do
inc(i);
if n=a[i-1]
then writeln('9')
else
begin
x:=((n-a[i-1]) div i)+a[i-1];
y:=(n-a[i-1]) mod i;
if y=0
then writeln(x mod 10)
else
begin
inc(x);
ans:=(x mod power[i-y+2]) div power[i-y+1];
writeln(ans);
end;
end;
end.
我用自己的数据试验都对的,但测试机测下来答案都错的,帮忙看看是哪儿不对
数列:12345678910111213...........
输入是一个数n,表示求数列的第n位
1<=n<=10^8
输出第n位上的数
样例:
输入:33
输出:1
我编的代码:
const a:array[1..8] of longint=(9,189,2889,38889,488889,5888889,68888889,788888889);
power:array[1..8] of longint=(1,10,100,1000,10000,100000,1000000,10000000);
var ans,i,n,x,y:longint;
begin
readln(n);
i:=1;
while n>a[i] do
inc(i);
if n=a[i-1]
then writeln('9')
else
begin
x:=((n-a[i-1]) div i)+a[i-1];
y:=(n-a[i-1]) mod i;
if y=0
then writeln(x mod 10)
else
begin
inc(x);
ans:=(x mod power[i-y+2]) div power[i-y+1];
writeln(ans);
end;
end;
end.
我用自己的数据试验都对的,但测试机测下来答案都错的,帮忙看看是哪儿不对