Чтобы пронумеровать страницы книги было использовано n цифр. Найдите количество страниц книги. Нужна формула для всех n
к примеру было использовано 13 цифр , а страниц оказалось 11
или
21 цифр , 15 страниц
Ответы на вопрос
Ответил Матов
0
Можно с начало определить в какой разряд (однозначное,двузначное,трехзначное итд) принадлежит данное число по количеству цифр 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
Подставляя в
То есть к примеру для 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 страниц
Как определить k можно по оценке, то есть исходя из того какое n , допустим для двузначных чисел количество цифр от 1 до 189 цифр итд
Очевидно 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
Подставляя в
То есть к примеру для 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 страниц
Как определить k можно по оценке, то есть исходя из того какое n , допустим для двузначных чисел количество цифр от 1 до 189 цифр итд
Ответил Marqweez
0
#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 ) ;
}
#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 ) ;
}
Ответил Marqweez
0
случайно , не обращай внимания
Ответил Матов
0
Да скорее всего это задача на программирование
Новые вопросы
Русский язык,
2 года назад
Литература,
8 лет назад
Геометрия,
8 лет назад
Физика,
9 лет назад
Алгебра,
9 лет назад