1 Компьютерный алфавит при использовании системы кодировки ASCII имеет мощность 256 символов. Определите информационный вес компьютерного символа в кодировке ASCII.
Тут довольно простое задание, которое можно решить просто подбором (найти правильное основание системы, и заодно выяснить что за цифры соответствуют остальным символам).Я объясню немного подробнее логику рассуждений при таком решении. Итак:символ # это 1запись # * это 4запись # @ это 7 Найти, чему равна запись @ * # Для того, чтобы это найти, нам надо узнать основание используемой здесь системы счисления. Обозначим его как x.Вспомним, что основание системы счисления- это целое число не меньше двух (x ≥ 2). Рассмотрим запись числа четыре: (это перевод числа из системы с основанием x в десятичную)Раз запись числа 4 состоит из двух разрядов, значит основание системы не может быть больше четырёх (x≤4).Ведь уже при основании пять (x = 5) вес второго разряда числа был бы равен пяти (), и всё число было бы явно больше четырёх. Далее, рассмотрим запись числа семь: Мы видим, что второй разряд не изменился- здесь тоже стоит единица. А само число увеличилось на три (7 - 4 = 3). Значит, на три увеличилась цифра в первом разряде (была *, стала @). То есть, Итак, основание- это целое число, не меньше двух и не больше четырёх. Подходят всего три числа- 2, 3, 4.В каком из этих оснований системы можно прибавить к цифре три без переноса в следующий разряд?если основание 2 -то есть всего две цифры: 0 и 1если основание 3 -то есть три цифры: 0, 1 и 2если основание 4 -то четыре цифры: 0, 1, 2 и 3Такие цифры используются в одном разряде. И, если при сложении мы выходим за эти цифры, то произойдёт перенос в следующий разряд (чего у нас не было, во втором разряде осталась единица). Получается, что в пределах одного разряда, тройку можно прибавить только в системе с основанием 4, причём только в одном случае (0 + 3 = 3).Значит:символ * это 0символ @ это 3а основание системы счисления равно четырём Осталось перевести запись @ * # из четверичной в десятичную систему счисления:
1. PascalABC.NET 3.3.5, сборка 1644 от 23.03.2018 Внимание! Если программа не работает, обновите версию!
begin var (a,b):=ReadInteger2; Range(a,b).Aggregate(Biginteger(1),(p,q)->p*q).Println end.
Результат показан во вложении 1. Большое число получилось)))
2. Free Pascal
program ideone;
var a,b,i:integer; p:extended;
begin Read(a,b); p:=1; for i:=a to b do p:=p*i; Writeln(p) end.
Результат приведен во вложении 2. К сожалению, на интервале данных [1;2018] в этой версии Паскаля недостаточно диапазона значений представляемого результата и было вычислено произведение на [1;1000]. Для [1;2018] выводится Inf - машинная бесконечность.
Итак:символ # это 1запись # * это 4запись # @ это 7
Найти, чему равна запись @ * #
Для того, чтобы это найти, нам надо узнать основание используемой здесь системы счисления. Обозначим его как x.Вспомним, что основание системы счисления- это целое число не меньше двух (x ≥ 2).
Рассмотрим запись числа четыре:
(это перевод числа из системы с основанием x в десятичную)Раз запись числа 4 состоит из двух разрядов, значит основание системы не может быть больше четырёх (x≤4).Ведь уже при основании пять (x = 5) вес второго разряда числа был бы равен пяти (), и всё число было бы явно больше четырёх.
Далее, рассмотрим запись числа семь:
Мы видим, что второй разряд не изменился- здесь тоже стоит единица. А само число увеличилось на три (7 - 4 = 3). Значит, на три увеличилась цифра в первом разряде (была *, стала @). То есть,
Итак, основание- это целое число, не меньше двух и не больше четырёх. Подходят всего три числа- 2, 3, 4.В каком из этих оснований системы можно прибавить к цифре три без переноса в следующий разряд?если основание 2 -то есть всего две цифры: 0 и 1если основание 3 -то есть три цифры: 0, 1 и 2если основание 4 -то четыре цифры: 0, 1, 2 и 3Такие цифры используются в одном разряде. И, если при сложении мы выходим за эти цифры, то произойдёт перенос в следующий разряд (чего у нас не было, во втором разряде осталась единица).
Получается, что в пределах одного разряда, тройку можно прибавить только в системе с основанием 4, причём только в одном случае (0 + 3 = 3).Значит:символ * это 0символ @ это 3а основание системы счисления равно четырём
Осталось перевести запись @ * # из четверичной в десятичную систему счисления:
ответ: 49
Внимание! Если программа не работает, обновите версию!
begin
var (a,b):=ReadInteger2;
Range(a,b).Aggregate(Biginteger(1),(p,q)->p*q).Println
end.
Результат показан во вложении 1. Большое число получилось)))
2. Free Pascal
program ideone;
var
a,b,i:integer;
p:extended;
begin
Read(a,b);
p:=1;
for i:=a to b do p:=p*i;
Writeln(p)
end.
Результат приведен во вложении 2.
К сожалению, на интервале данных [1;2018] в этой версии Паскаля недостаточно диапазона значений представляемого результата и было вычислено произведение на [1;1000]. Для [1;2018] выводится Inf - машинная бесконечность.