Задача:
В Баку вскоре откроется новая станция метро. Эскалатор в метро состоит из n ступенек, пронумерованных целыми числами от 1 до n. На ступеньках с номерами, кратными десяти, а также на первой и последней ступеньке, пишут их номера. При записи номера на каждую записанную цифру уходит одно и то же количество краски.
Чтобы рассчитать необходимое количество краски, требуется узнать, сколько цифр будет написано. Напишите программу, которая определяет, сколько всего цифр будет использовано в номерах подписанных ступенек.
Входные данные:
Одно целое число n (1 ≤ n ≤ 10^18) - количество ступеней эскалатора.
Выходные данные:
Выведите суммарное количество цифр в номерах подписанных ступенек.
Необходимо решить только с помощью формул и функций (не используя условные операторы, циклы и т.д.)
Вот наброски кода, где вычислил количество чисел для покраски и количество цифр в конечном числе, есть много идей, но все они без циклов в моем понимании не реализуются.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
long long n;
long double num, numz;
cin >> n;
num = ceil(n / 10.0);
numz = ceil(log10(n));
return 0;
}
Проблема в том, что не могу понять как без цикла учесть то, что количество цифр в числе меняется каждый разряд и посчитать их сумму. Буду благодарен за любую помощь и подсказки.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей