fork download
  1. #include <iostream>
  2. using namespace std;
  3. #define ll long long
  4. int main() {
  5. ll n, q = 0, s = 1/*учитываем первую ступеньку*/, d = 0, d1 = 0;
  6. cin >> n;
  7. if (n == 1){cout << 1;return 0;}
  8. //важный частный случай,где первая ступенька последняя
  9. bool n1 = (n % 10 != 0);
  10. //что бы не забыть про последнюю ступеньку
  11. ll n2 = n / 10;
  12. //кол-во помеченных ступенек без учета первой и последней
  13. while (n > 9) {
  14. n /= 10;
  15. q++;//с каждым десятком кол-во цифр в числе растет
  16. s += (d - d1) * q;//реализация указанной выше идеи
  17. d1 = d;
  18. d = d * 10 + 9;//числа, которые я уже учел
  19. }
  20. n2 -= (d) / 10;//помеченные не учтеные ступеньки
  21. q++;
  22. s += n2 * q;
  23. s += n1 * q;//считаем последнюю ступеньку
  24. cout << s;
  25. return 0;
  26. }
Success #stdin #stdout 0s 15232KB
stdin
52
stdout
13