ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 2635
Скачиваний: 9
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Ещё пример задания:
Р-25. (демо-2021) Значение арифметического выражения: 497 + 721 – 7 – записали в системесчисления с основанием 7. Сколько цифр 6 содержится в этой записи?Решение:-
приведём все числа к степеням семерки, учитывая, что 49 = 72
-
расставим степени в порядке убывания:
-
Очевидно, что «шестёрки» в семеричной записи значения выражения возникнут только за счёт вычисления разности 714 – 71, их количество равно 14-1=13 -
Ответ: 13.
-
язык Python позволяет работать с большими числами, не задумываясь о том, что для их хранения требуется больше памяти, чем для «обычного» целого числа (когда значение не помещается в 4 байта, интерпретатор автоматически переходит на представление числа в виде массива с «длинной арифметикой») -
поэтому может быть написана программа, которая вычисляет нужное значение и методом деления в столбик определяет все цифры его записи в семеричной системе счисления; шестёрки считаем с помощью счётчика count6:
-
Ответ: 13.
-
Pascal ABC.NET за счет использования фреймворка .NET позволяет воспользоваться типом System.Numerics.BigInteger (предназначенным для произвольно больших целых со знаком) и связанными с ним функциями. -
Таким образом, программа получается во многом схожей с программами на Python. Особо отметим, что использование функций возведения в степень не связанных с типом BigInteger для систем с основанием, не являющимся степенью двойки, приводит к неверным результатам из-за использования вещественных чисел. Например, BigInteger(power(9,34)) или BigInteger(9 ** 34) преобразуют вещественное число в целое произвольно большой длины, но еще при операции возведения в степень потеряется часть идеальной, математической мантиссы. -
В связи с вышесказанным допустимо только использование записей вида BigInteger.Pow(9,34). -
Полная программа:
vara: BigInteger;k: int64;begina := BigInteger.Pow(49, 7) + BigInteger.Pow(7, 21) - 7;k := 0;while (a > 0) dobeginif (a mod 7 = 6) thenk := k + 1;a := a div 7;end;writeln(k);end.
-
Ещё одно решение на PascalABC.NET (П.Е. Финкель)
-
здесь «bi» длинным, а ** означает возведение в степень -
Ответ: 13.
-
язык Java позволяет работать с большими числами с помощью типа BigInteger; -
может быть написана программа, которая вычисляет значение арифметического выражения и методом деления в столбик определяет все цифры его записи в семеричной системе счисления; шестёрки считаем с помощью счётчика amt6: -
полная программа:
public class Main {
public static void main(String[] args) {
final BigInteger SIX = BigInteger.valueOf(6);
final BigInteger SEVEN = BigInteger.valueOf(7);
final BigInteger NUM1 = BigInteger.valueOf(49).pow(7);
final BigInteger NUM2 = BigInteger.valueOf(7).pow(21);
BigInteger num = NUM1.add(NUM2).subtract(SEVEN); BigInteger amt6 = BigInteger.ZERO;
while (!num.equals(BigInteger.ZERO)) {
if (num.mod(SEVEN).equals(SIX)) {
amt6 = amt6.add(BigInteger.ONE);
}
num = num.divide(SEVEN);
}
System.out.println(amt6);
}
}
-
Ответ: 13.
Ещё пример задания:
Р-24. (М.В. Кузнецова) Значение арифметического выражения: 6410 + 290 - 16 записали в системе счисления с основанием 8. Сколько цифр «7» содержится в этой записи?Решение:-
Приведём все числа к степеням восьмерки, учитывая, что 16 = 64 - 48 =82-6∙81
-
Перепишем выражение, располагая степени восьмёрки в порядке убывания:
820 + 830 – 82 + 6∙81 = 830 + 820 – 82 + 6∙81 -
Очевидно, что «семёрки» в восьмеричной записи значения выражения возникнут только за счёт вычисления разности 820 – 82, их количество равно 20-2=18 -
Ответ: 18.
-
В среде Pascal ABC.NET при использовании типа BigInteger задача может быть решена с помощью программы:
-
Ответ: 18. -
Ещё одно решение на PascalABC.NET (П.Е. Финкель)
-
если доступна среда программирования на Python, можно написать программу, которая использует встроенную арифметику длинных чисел:
-
ответ: 18.
Ещё пример задания:
Р-23. (М.В. Кузнецова) Значение арифметического выражения: 99 – 39 + 919 – 19 записали в системе счисления с основанием 3. Сколько цифр «2» содержится в этой записи?Решение:-
Приведём все числа к степеням тройки, учитывая, что 19=27-8=33-(2∙31+2∙30):
99 – 39 + 919 – 19= (32)9 – 39 + (32)19 – (33 – (2∙31 + 2∙30)) = 318 – 39 + 338 – 33 + 2∙31 + 2∙30
-
Перепишем выражение, располагая степени тройки в порядке убывания:
318 – 39 + 338 – 33 + 2∙31 + 2∙30 = 338 + 318 – 39 – 33 + 2∙31 + 2∙30 -
Сначала рассмотрим часть выражения, в которой имеется два расположенных подряд «минуса»: 318 - 39 ‑ 33:-
найдём разность двух крайних чисел: 318 – 33, в её троичной записи 18 – 3=15 «двоек» и 3 «нуля»; -
вычтем из этого числа значение 39: одна из «двоек» (на 10-й справа позиции) уменьшится на 1, остальные цифры не изменятся; -
итак, троичная запись разности 318 – 39 – 33 содержит 15 – 1=14 «двоек», одну «единицу» и 3 «нуля»
-
-
Прибавим к полученному значению сумму: 2∙31 + 2∙30 = 223. В троичной записи результата два крайних справа нуля заменяются на «двойки», остаётся один ноль. Общее количество «двоек»: 14+2=16. -
Прибавление значения 338 не изменит количества «двоек» в троичном числе: слева от имеющихся цифр появятся ещё 38 – 18=20 «нулей» и одна «единица» – на 39-й справа позиции. -
Итак, результат, записанный в троичной системе, содержит 39 цифр. Его состав: 16 «двоек», 2 «единицы» (их позиции: 39-я и 10-я справа) и 21 «нуль» (39-16-2=21). -
Ответ: 16.
Ещё пример задания:
Р-22. Значение арифметического выражения: 98 + 35 – 9записали в системе счисления с основанием 3. Сколько цифр «2» содержится в этой записи?Решение:-
приведём все слагаемые к виду 3N и расставим в порядке убывания степеней:
-
первое слагаемое, 316, даёт в троичной записи одну единицу – она нас не интересует -
пара 35 – 32 даёт 5 – 2 = 3 двойки -
Ответ: 3.
-
задача может быть решена с помощью программы на Python, где есть встроенная поддержка длинных чисел:
-
вариант без использования символьных строк:
-
Ответ: 3.
-
эта конкретная задача может быть решена с помощью электронных таблиц -
Замечание. Электронные таблицы имеют ограничения при работе с длинными целыми числами. Например, Excel при вводе больших чисел заменяет все цифры после 15-го разряда на нули. Это легко проверить, введя в ячейку число с более чем 15-ю разрядами.
-
введём заданное число, заданное арифметическим выражением, в ячейку электронной таблицы:
-
выполним алгоритм перевода числа в троичную систему: найдём в B1 остаток от деления числа на 3, а в A2 – частное: