В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
Divona2003
Divona2003
08.12.2021 22:56 •  Информатика

Памагати решить задачу, желательно алгоритм, а не готовую прогу

Показать ответ
Ответ:
Denis4345
Denis4345
07.08.2022 05:31
Тут есть несколько ошибок:
1. Отсутствует ключевое слово begin в основной программе. Насколько я понял, оно должно стоять перед k:=0.

2. Внутри функции ODD не объявлена локальная переменная i, которая используется в цикле.

3. В основной программе вы вызываете функцию ODD и передаете ей аргумент с[i], хотя в описании функции аргумент не обозначен.

4. В функции ODD происходит обработка глобального массива C, что делать нельзя.

5. Функция должна возвращать какое-то значение. В описании вы указали integer, а в основной программе в строке if Odd(c[i])... вы подразумеваете, что оно должно быть булевым, т.е. или True или False.

Исправьте, и может быть (если ошибок больше нет) программа заработает.
0,0(0 оценок)
Ответ:
Amy1503
Amy1503
30.08.2021 12:39
9^{22} + 3^{66} - 12

Преобразуем выражение
9^{22} + 3^{66} - 12 = 3^{44} + 3^{66} - 4*3 = 3^{44} + 3^{66} - 3^{2} - 3^{1}

Первые 2 слагаемых при переводе в с. сч. 3 дадут числа вида "10000...00", и количество нулей будет равно величине степени. (Можешь сам у в этом убедиться для чисел с небольшой степенью). Поэтому первые два слагаемых переведутся в число "100...0010000...00", кол-во нулей между единицами равно 66-45 = 21, правее средней единицы = 44.

Число 3^{2} + 3^{1} гораздо меньше. Поэтому при вычитании мы будем занимать разряд до тех пор, пока не дойдем до средней единицы, которая станет после этого 0, а все, что правее - двойками (было "100..00100..00", стало "100..00022..22", но только после заёма единицы, ещё нужно довычистывать). Затем проведем вычитание и посмотрим, сколько двоек пришлось убрать для этого.

Переводим (3^{2} + 3^{1})_{10} = 110_{3}.
Вычитаем "100..00100..0000" - 110 = "100..00022..2120"
Кол-во двоек между маркерованными цифрами = 44 - 3 = 41. Добавим ещё одну 2 правее маркерованной единицы = 42 - ответ
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота