Задача
Для нумерации [latex]m[/latex] страниц книги использовали [latex]n[/latex] цифр. По заданному [latex]n[/latex] вывести [latex]m[/latex] или [latex]0[/latex], если решения не существует. Нумерация начинается с первой страницы.
Входные данные
Единственное число [latex]n[/latex]. В книге не более [latex]1001[/latex] страницы.
Выходные данные
Вывести количество страниц в книге.
Тесты
Входные данные | Выходные данные |
---|---|
27 | 18 |
15 | 12 |
9 | 9 |
49 | 29 |
50 | 0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> using namespace std; int main() { int n, m, minus = 1; cin >> n; m = 1; for (int a = 1; n> 0; a *= 10) { for (int b = a; b < a*10; b++) { if ((n - minus) < 0) { cout << 0; return 0; } if ((n - minus) == 0) { cout << m; return 0; } n-= minus; m++; } minus++; } return 0; } |
Решение
Для решения этой задачи я описал [latex]3[/latex] переменные: n, mи minus, где n- количество цифр, использованных для нумерации страниц, m — количество страниц и minus — «счетчик», для определения количества цифр в числе [latex]a[/latex]. Использовал [latex]2[/latex] вложенных цикла, где счетчик [latex]a[/latex] — определяет разрядность числа страницы [latex]b[/latex]. Внутри вложенного циклы перед вычитанием minusиз n поставил проверку на выполнения условий: если n == 0, значит мы закончили считать страницы и если [latex]n — minus < 0[/latex], значит на следующей итерации мы запишем в [latex]n[/latex] отрицательное значение, значит во входных данных была ошибка.
Спасибо большое ,учту
Теперь появилось еще одно замечание — пробелы не до запятой, а после неё 🙂