Решить по информатике на языке pascal число х получают следующим образом: слева на право записывают без пробелов подряд числа от 1 до n (). по заданному числу n определить, сколько цифр в числе х. , много , программировать умею, саму не понимаю.
Можно покороче и без biginteger, и без массивов)))
var n,k,s,m,p:longint; begin Read(n); s:=0; k:=0; m:=1; p:=n; repeat inc(k); if p<10 then s:=s+k*(n-m+1) else begin s:=s+k*9*m; m:=10*m end; p:=p div 10 until p=0; Writeln(s); end.
s: biginteger;
n,i: int64;
ar:array of int64=(9,90,900,9000,90000,900000,9000000,90000000);
begin
i:=1;
read(n);
while n-ar[i-1]>=0 do
begin
s:=s+(ar[i-1]*i);
n:=n-ar[i-1];
i:=i+1;
end;
if(n>0)then begin s:=s+(n*i);
end;
write(s);
end.
var
n,k,s,m,p:longint;
begin
Read(n);
s:=0; k:=0; m:=1; p:=n;
repeat
inc(k);
if p<10 then s:=s+k*(n-m+1)
else begin s:=s+k*9*m; m:=10*m end;
p:=p div 10
until p=0;
Writeln(s);
end.
Примеры:
5
5
15
21
120
252
1535323
9636157