Форум » Циклы и ветвления » задание 20 №150 » Ответить

задание 20 №150

VI12: Добрый день, помогите разобраться с заданием: Получив на вход натуральное число x, этот алгоритм печатает два числа: a и b. Укажите наибольшее натуральное число, при вводе которого алгоритм печатает сначала 13, а потом 3. var x, a, b: longint; begin readln(x); a := 0; b := 0; while x > 0 do begin x := x div 9; if x mod 2 > 0 then a := a + x mod 9; b := b + 1; end; writeln(a); writeln(b); end.

Ответов - 4

polyakovss: Здравствуйте, VI12! 1) Что делает предложенный алгоритм? Пока в числе x, переведенном в девятеричную систему счисления, есть хотя бы одна цифра, в цикле выполняются следующие действия: отбрасывается последняя цифра в девятеричном представлении числа x (x := x div 9), а потом, если число x нечетное (x mod 2 > 0), переменная «a» увеличивается на последнюю цифру девятеричного представления числа x (a := a + x mod 9). В переменной b подсчитывается количество цифр в девятеричном представлении числа x. 2) Для систем счисления с нечётным основанием (3, 5, 7, 9, ...) справедливо утверждение: число, записанное в системе счисления с нечетным основанием чётно тогда и только тогда, когда сумма всех его цифр чётна (поэтому судить о чётности числа по чётности его последней цифры в системе счисления с нечётным основанием нельзя). Следовательно, число 13 состоит из 2 нечетных цифр (при каждом отбрасывании последней цифры в девятеричном представлении числа x сумма цифр должна оставаться нечетной). Поскольку нужно найти наибольшее натуральное число, то это цифры 7 и 6 (сначала их сумма равна нечетному числу 13, а затем после отбрасывания последней цифры сумма цифр числа равна нечетному числу 7). 3) Почему число 13 состоит из 2 цифр? Нужно обратить внимание на то, что из трех цифр в девятеричном представлении числа x последняя цифра числа была отброшена сразу (x := x div 9) и в анализе числа (x mod 2 > 0) не участвовала. При любой последней цифре в девятеричном представлении числа x и выполнении пункта 2 алгоритм печатает сначала 13, а потом 3. Но так как нужно найти наибольшее натуральное число, то выберем цифру 8. Получилось девятеричное число 7689 = 62910. Ответ: 629. Посмотрите разбор заданий Р-11 и Р-10 в ege20.doc, а также здесь (polyakovss Сообщение: 55 N118 и N119) и здесь. Попробуйте решить две мои аналогичные задачи: Укажите количество натуральных чисел, при вводе которых алгоритм печатает сначала 2, а потом 3. var x, a, b: longint; begin readln(x); a := 0; b := 0; while x > 0 do begin x := x div 9; if x mod 2 > 0 then a := a + 1; b := b + 1; end; writeln(a); writeln(b); end. Ответ: 180. Укажите количество натуральных чисел, при вводе которых алгоритм печатает сначала 1, а потом 3. var x, a, b: longint; begin readln(x); a := 0; b := 0; while x > 0 do begin x := x div 9; if x mod 2 > 0 then a := a + 1; b := b + 1; end; writeln(a); writeln(b); end. Ответ: 288.

VI12: спасибо большое

VI12: Ну, вот Ваши задачи опять в тупик ставят: нашла максимальное и минимальное число 719 и 81, а дальше как найти среди них подходящие числа?


polyakovss: Здравствуйте, VI12! Решим первую задачу, а вторую Вы решите самостоятельно. Укажите количество натуральных чисел, при вводе которых алгоритм печатает сначала 2, а потом 3. var x, a, b: longint; begin readln(x); a := 0; b := 0; while x > 0 do begin x := x div 9; if x mod 2 > 0 then a := a + 1; b := b + 1; end; writeln(a); writeln(b); end. В девятеричном представлении первые две цифры числа должны давать нечетную сумму, а сумма, состоящая из одной первой цифры, также должна быть нечетной. Это следует из того, что а = 2 (найдено две нечетные суммы: if x mod 2 > 0 then a := a + 1). Последняя третья цифра числа, как уже было объяснено, может быть любой. Значит, искомые числа в девятеричном представлении будут такими: 10X 12X 14X 16X 18X (100, 101, 102, 103, 104, 105, 106, 107, 108, 120, 121, ...) 30X 32X 34X 36X 38X 50X 52X 54X 56X 58X 70X 72X 74X 76X 78X, где X - любая цифра от 0 до 8 (всего 9 цифр). Всего чисел в каждой строке 5 * 9 = 45. Строк 4. Всего чисел 45 * 4 = 180. Ответ: 180.



полная версия страницы