h1>Задача
Для нумерации [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 24 25 26 27 28 29 30 31 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n, m, minus = 1; n = in.nextInt(); m = 1; for (int a = 1; n> 0; a *= 10) { for (int b = a; b < a*10; b++) { if ((n - minus) < 0) { System.out.print(0); return; } if ((n - minus) == 0) { System.out.print(m); return; } n-= minus; m++; } minus++; } in.close(); return; } } |
Решение
Для решения этой задачи я описал [latex]3[/latex] переменные: [latex]n[/latex], [latex]m[/latex] и [latex]minus[/latex], где [latex]n[/latex]- количество цифр, использованных для нумерации страниц, [latex]m[/latex] — количество страниц и [latex]minus[/latex] — «счетчик», для определения количества цифр в числе [latex]a[/latex]. Использовал [latex]2[/latex] вложенных цикла, где счетчик [latex]a[/latex] — определяет разрядность числа страницы [latex]b[/latex]. Внутри вложенного цикла перед вычитанием [latex]minus[/latex] из [latex]n[/latex] поставил проверку на выполнения условий: если [latex]n==0[/latex], значит мы закончили считать страницы и если [latex]n-minus<0[/latex], значит на следующей итерации мы запишем [latex]n[/latex] в отрицательное значение, значит во входных данных была ошибка.