Чтобы пронумеровать странички книжки было использовано n цифр. Найдите количество страниц

Чтоб пронумеровать странички книги было использовано n цифр. Найдите количество страниц книжки. Нужна формула для всех n

к примеру было использовано 13 цифр , а страничек оказалось 11
либо
21 цифр , 15 страничек

Задать свой вопрос
Anzhelika
Это всё условие?
Лавин Слава
da
1 ответ
Можно с начало найти в какой разряд (однозначное,двузначное,трехзначное итд) принадлежит данное число по количеству цифр n. 
Явно n это невольное число, так как цифры образуют разряд числа. 
 
Для чисел 1 до 99  всего от 1 до 189 цифр (9+2*90=189) цифр, страничку можно отыскать по формуле  (n-9)/2+9 = (n+9)/2 

Для чисел от 100 до 999 всего от 189+3 до 189+3*900=2889 цифр, страницу можно отыскать по формуле (n-189)/3+99 = (n+108)/3   
 
Для чисел от 1000 до 9999 всего от 2889+4 до 2889+4*9000=38889  страницу можно отыскать по формуле (n-2889)/4+999 = (n+1107)/4  

итд то есть реккурентная формула будет иметь вид, для k-разряда 
S=(n-(9+2*90+3*900+4*9000+...))/k+(10^(k-1)-1)  = 
 (n-9(1+20+300+4000+...))/k+(10^(k-1)-1)  

 Найдем сумму 1+20+300+4000+.... = 1+2*10+3*10^2+4*100^3=1+2x+3x^2+4x^3+5x^4...+y*x^(y-1)  тогда рассмотрим сумму функцию 
 x+x^2+x^3+x^4...+x^y ее производная x+2x+3x^2+4x^2+...+yx^(y-1) значит найдя сумму x+x^2+x^3+...+x^y=(x^y-1)/(x-1) (геометрическая прогрессия) 
Обнаружив ((x^y-1)/(x-1))' и сменяя x=10 и y=k+1 
Получаем (10^k*(9*k-1)+1)/81 то есть сумма 1+2*10+3*10^2+4*100^3+... рассчитывается по формуле (10^k*(9*k-1)+1)/81  
Подставляя в
 S=\fracn-\frac10^k \cdot (9k-1)+19k+(10^k-1-1) = \\amp;10; S = \frac9n+10^k-9k-19k\\amp;10; 


То есть к образцу для n=13 получаем k=2 то есть (двузначное число) 
откуда S=(9*13+10^2-9*2-1)/18 = 11 страничек  
Для n=21 получаем k=2 подставляя S=(9*21+10^2-9*2-1)/(18)=15 страничек 

Как определить можно по оценке, то есть исходя из того какое n , допустим для двузначных чисел количество цифр от 1 до 189 цифр итд 

Гриншпан Юрий
include include using namespace std;int sum ( int n ) if ( n / 10 != 0 ) return n % 10 + sum ( n / 10 ) ; else return n % 10 ; int main () int j = 10 ; long long n , x ; cin >> n >> x ; for ( int i = 1 ; i < n ; i++ ) j *= 10 ; cout << sum ( j-x ) ;
Велиуллова Кристина
нечаянно , не обращай внимания
Надежда
Да скорее всего это задачка на программирование
, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы
Во сколько раз число атомов кислорода в земной коре больше числа

Химия.

Составить монолог от имени дневника двоечника 7-10 предложений

Русский язык.

Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо

Разные вопросы.

Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных

Разные вопросы.

Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей

Математика.

Определить предложения какие они по цели высказывания и по интонации

Русский язык.

"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.

Русский язык.

на одной грядке коротышки посадили 3 ряда морковок по 8 штук

Разные вопросы.

эссе на тему какое образование дается в каждой семье

Қазақ тiлi.

Put the verb in brackets into the Present Indefinite. 1The Volga ,

Английский язык.

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт