Помогите решить задачу по информатике на языке pascalЧисло Х получают следующим образом: слева на право записывают без пробелов подряд числа от 1 до N (123456...N). По заданному числу N определить, сколько цифр в числе Х. Помог...

Помогите решить задачу по информатике на языке pascal Число Х получают следующим образом: слева на право записывают без пробелов подряд числа от 1 до N (123456...N). По заданному числу N определить, сколько цифр в числе Х. Помогите пожалуйста, даю много баллов, программировать умею, саму задачу не понимаю.
Гость
Ответ(ы) на вопрос:
Гость
var   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.
Гость
Можно покороче и без 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. Примеры: 5 5 15 21 120 252 1535323 9636157
Не нашли ответ?
Ответить на вопрос
Похожие вопросы